2011-04-15 2 views
0

Je le code suivant:valeurs aléatoires pour une gamme

Low = 10 
High = 25 
R = Int((High - Low + 1) * Rnd() + Low) 

Sheets("ITEMS DATA").Range("D4:D39").Value = R 

Je voudrais que la plage indiquée pour renvoyer un nombre aléatoire, mais il renvoie le même nombre aléatoire pour toute la gamme (D4: D39) . Je voudrais retourner un nombre aléatoire différent pour la gamme indiquée mais je ne sais pas comment.

Répondre

2

@ Mike:

Essayez ceci:

Low = 10 
High = 25 
For c = 4 To 39 
    R = Int((High - Low + 1) * Rnd() + Low) 
    Sheets("ITEMS DATA").Cells(c, 4).Value = R 
Next 

Bien sûr, vous pouvez changer la méthode deux arguments dans les cellules() à votre goût.

+0

C'était ce que je voulais dire: rougir: – Pete

1

Vous avez créé une valeur aléatoire, vous l'avez affectée à R, puis vous avez placé cette valeur dans votre plage. Il y a plusieurs façons de faire ce que vous voulez faire. Je suppose qu'il ya une bonne raison de ne pas simplement coller la formule dans les cellules directement, donc:

Range("B1:B21").Formula = "=Int((A1 - A2)+1) * Rand() + A2" 

le ferait, en supposant que A1 et A2 détiennent respectivement haut et bas. Edité pour supprimer les mauvaises réponses, et celui-ci a été testé.

+0

J'ai essayé votre premier exemple et il fait la même chose. Je ne peux pas obtenir votre deuxième exemple de travail. – Mike

+0

DOh, oui bien sûr, vous avez besoin de parcourir la gamme réglage de chaque cellule, au lieu de définir toute la gamme en une seule fois. Le deuxième exemple aura le même problème. Je pense que Range.Formula est le chemin à parcourir. – Pete

+0

Parlez-vous de votre premier exemple ou deuxième? Si oui, est-ce que je changerais où il est dit. Range to Range.Formula? Merci – Mike

Questions connexes