Calcul statique de nombre aléatoire (calculer une fois) dans Excel
Je suis à la recherche d'un moyen pour calculer un nombre aléatoire une fois dans Excel. De sorte que ses calculée la première fois de son nom, mais il ne change pas par la suite.
Ainsi, par exemple, si j'avais quelque chose comme cela dans B1 RANDONCE(A1)
, puis la première fois, j'ai mis une valeur en A1, il serait de calculer une valeur aléatoire, mais alors il ne serait pas de changer à nouveau. Ou au moins pas jusqu'à ce que j'ai changé de A1 à nouveau.
Je voudrais le faire sans de recopier manuellement B1 à transformer à partir d'une formule à une valeur comme décrit ici. L'utilisation de macros est très bien.
Combien de temps la valeur de la nécessité de rester "fixe"? Juste en face d'une session, ou après l'enregistrement, etc?
Si vous voulez être heureux avec une valeur qui n'est pas "aléatoire", un peu opaque, vous pouvez utiliser quelque chose lié à partir de stackoverflow.com/questions/3498356/md5-hash-function-in-excel pour calculer une valeur de hachage de la valeur dans
On dirait que vous voulez un événement. J'ai ajouté une réponse ci-dessous. Notez que vous pouvez affecter B1 c'est la valeur (à partir d'une formule) en une seule étape en VBA, de sorte que vous n'avez pas besoin de le faire comme ils écrit dans le lien que vous avez ajouté.
Comment garder des nombres aléatoires à partir de la modification dans Excel
Si vous voulez être heureux avec une valeur qui n'est pas "aléatoire", un peu opaque, vous pouvez utiliser quelque chose lié à partir de stackoverflow.com/questions/3498356/md5-hash-function-in-excel pour calculer une valeur de hachage de la valeur dans
A1
.On dirait que vous voulez un événement. J'ai ajouté une réponse ci-dessous. Notez que vous pouvez affecter B1 c'est la valeur (à partir d'une formule) en une seule étape en VBA, de sorte que vous n'avez pas besoin de le faire comme ils écrit dans le lien que vous avez ajouté.
Comment garder des nombres aléatoires à partir de la modification dans Excel
OriginalL'auteur studgeek | 2011-11-04
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'un UDF de la mémoire, de sorte qu'il sait si la cellule a changé
Ce UDF sera de retour une nouvelle valeur aléatoire lorsque le référencement d'appel de changements, sinon renvoie la dernière valeur aléatoire (c'est à dire pas de changement)
Également de retour vide si la cellule source est vide (peut ou peut ne pas être ce que vous avez besoin?)
Remarque: on a le problème que les
Static
valeurs sont perdues lorsque la feuille est fermé, de sorte que la valeur change chaque fois que la feuille est ouvert.Function RandOnce(Low As Long, High As Long, r As Range) As Long
Modifierv = Rnd
dev = Int(Rnd * (High + 1 - Low)) + Low
et ajouter 'Aléatoire' après les déclarations assurez-vous que le RNG est remis.OriginalL'auteur chris neilsen
Je pense que j'ai un moyen beaucoup plus facile de le faire. Remplir votre feuille de calcul, puis appliquer l' =ALEA.ENTRE.BORNES fonction de cette colonne de nombres. Ensuite ce faire:
Maintenant, vous avez les valeurs les plus récemment créés et ils sont statiques.
OriginalL'auteur Adam
Vous pouvez créer un fichier UDF (Fonction Définie par l'Utilisateur):
Dans la cellule où vous souhaitez que le résultat, vous pouvez mettre:
La valeur va changer (en fait, être recalculé) uniquement lorsque la source de changements de valeur (aka
A1
).Cela n'a pas été précisé par les OP et je pense que ce sera assez fourni les informations qu'il a donné.
Je suis en désaccord. Je pense que ", mais alors il ne serait pas de changer à nouveau" exclut le changement sur le plein le recalcul.
OriginalL'auteur JMax
Vous pouvez également utiliser des références circulaires pour faire un purement fondé sur une formule "toggle switch" permettant à l'utilisateur de calculer un ensemble de nombres aléatoires, puis d'éteindre plus de recalculs. Éteignez référence circulaire avertissements, puis mettre cette formule dans la cellule B3:
Si la cellule B1 contient "OUI", B3 va générer un nouveau nombre aléatoire à chaque recalcul de la feuille de calcul; si B1 contient une autre valeur, la valeur actuelle de B3 seront conservés.
OriginalL'auteur Scott Forbes
Évidemment, de ne pas être la meilleure solution si vous devez suivre un grand nombre de cellules, mais si c'est juste A1-vous besoin de suivre pour les modifications, vous pouvez utiliser un événement pour faire de votre fonction dans la cellule B1, puis à la fin, affectez-lui la valeur a été donné. Je trouve ce la solution la plus simple et elle fonctionne comme vous en avez besoin pour.
Exemple:
Intersect
pour le rendre plus lisible. Pourtant, je trouve cette solution assez grande, comme il sera bien évidemment de ne pas modifier la valeur (à chaque fois que le Recalcul Complet, voir le débat avec Chris en dessous de ma réponse) jusqu'à ce queA1
allait changer (donc je pense que cela mérite un +1 :))OriginalL'auteur aevanko