=RAND()此函数是生成0~1之间的随机小数。
若要生成a与b之间的随机实数,应使用:=RAND(*(b-a+a所以若生成1与10之间的随机实数,应使用:=RAND(*9+1A1输入=rand(下拉至A1000
B1输入1,B2输入2,下拉至B1000,即B1000是1000点选a1:b1000,以A列排序
B列便是1-1000的随机数,且不重复
再来看下一个函数,求整函数
=int(a表示的是求不大于a的最大整数,比如int(6.78=6;int(9=9;int(-1.5=-2int(π=3
现在把这两个函数结合到一起,就可以完成你的问题了。选中某一列的第一行的单元格,在其中输入=int(rand(*9+1或者输入:
=int(rand(*9+1
都可以得到1-10之间的一个随机整数。
然后用鼠标拖动该单元右下角的填充柄向下拖动,就可以得到一列符合条件的1-10之间的随机整数了。
用同样的方法你也可以得到一行或多行或多列甚至一个工作表的随机数。
在excel中如何产生不重复随机数?问题:
如何在Excelb2:b101中,填充1-100范围的不重复随机数?
方法:
Sub不重复随机数(Fori=2To101
Range("b"&i=""‘初始化要填充的范围Nexti
Fori=2To101
Range("b"&i=Int(Rnd(*100+1
DoWhileWorksheetFunction.CountIf(Range("b2:b101",Range("b"&i>1
Range("b"&i=Int(Rnd(*100+1LoopNextiEndSub注:
(1)VBA中有随机函数rnd(,功能是:返回一个小于1,同时大于等于0的随机数。若要产生一个范围从lowerbound为m,到upperbound为n的随机数序列,常用算法是:int(rnd(*(n-m+1+m
(2)countif(是Excel工作表中的函数,不可在VBA中直接调用,可以用“worksheetfunction.函数”作为方法来调用工作表函数。
MyValue=Int((6*Rnd+1'生成1到6之间的随机数值。
提供两组公式来生成不重复的1~25的随机数值:
(1单元格A1:
=RANK(INDIRECT("G"&((ROW(1:1-1*5+COLUMN(,$G$1:$G$25
复制单元格A1,粘至单元格A1:E5。
公式的原理为:
将随机数值来拿排序(RANK函数),生成1~25的数值(基不上名次重复的机率应该是很低的)。
INDIRECT("G"&((ROW(1:1-1*5+COLUMN(:将5×5的单元格对照到单元格G1:G25。
(2单元格A1:=RANK(OFFSET($G$1,(ROW(1:1-1*5+COLUMN(A:A-1,,,,$G$1:$G$25