=RAND() 此函数是生成0~1之间的随机小数。
若要生成 a 与 b 之间的随机实数,应使用: =RAND()*(b-a)+a
所以若生成1 与 10 之间的随机实数,应使用: =RAND()*9+1
A1 输入 =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)=-2
int(π)=3
现在把这两个函数结合到一起,就可以完成你的问题了。
选中某一列的第一行的单元格,在其中输入
=int(rand()*9)+1
或者输入:
=int(rand()*9+1)
都可以得到1-10之间的一个随机整数。
然后用鼠标拖动该单元右下角的填充柄向下拖动,就可以得到一列符合条件的1-10之间的随机整数了。
用同样的方法你也可以得到一行或多行或多列甚至一个工作表的随机数。
在excel中如何产生不重复随机数?
问题:
如何在Excel b2:b101中,填充1-100范围的不重复随机数?
方法:
Sub 不重复随机数()
For i = 2 To 101
Range("b" & i) = "" ‘初始化要填充的范围
Next i
For i = 2 To 101
Range("b" & i) = Int(Rnd() * 100) + 1excel的随机数函数
Do While WorksheetFunction.CountIf(Range("b2:b101"), Range("b" & i)) > 1
Range("b" & i) = Int(Rnd() * 100) + 1
Loop
Next i
End Sub
注:
(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)
本式的原理和(1)很接近,只是将INDIRECT函数以OFFSET函数来取代,以取得地址。
使用方法:
1、选择要填充随机数的单元格范围,
2、点击按钮
3、输入随机区间的上限值
4、输入下限值
5、不重复的随机数就自动填充到你选择的单元格内了
注意:
1、如果提示启用宏,则启用哦
2、选择的单元格不要多于随机区间内的整数个数
随机数RAND()
语法RAND( )
RAND函数详解:返回大于等于 0 及小于 1 的均匀分布随机实数,每次计算工作表时都将返回一个新的随机实数。
注解:若要生成 a 与 b 之间的随机实数,请使用:RAND()*(b-a)+a
公式“=RAND()*1000”返回一个大于等于0、小于1000的随机数
如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。
例1:EXCEL随机数10到-10:
=INT(RAND()*20-10)
或=RAND()*(10-(-10))+10=RAND()*(10+10)+10
这个函数就是RandBetwween(bottom,top),表示生成从bottom到top之间的随机整数。
2、我们在Excel工作表的单元格中输入“=RandBetwween(10,100)”,不包括引号。
如果要产生大于等于M而小于等于N的随机整数,就可以使用这样的通用公式:=INT(RAND()*(N-M))+M
RANDBETWEEN(bottom,top)
Bottom参数:随机数的下限。
Top参数:随机数的上限。
bottom,top两个参数,用来确定您要想取得的随机数的范围;
比如,您要返回大于等于1而小于等于10的随机整数,那么,用法为:=RANDBETWEEN(1,10)
请注意,该函数返回的是一定范围内的随机整数,取值范围包括上限和下限值,即,取值范围为:[bottom,top
在A1里面A1-A999中用公式生成999个随机数=RAND()
B1-B60中用公式排序,B1中输入=RANK(A1,$A$1:$A$999),一直拉到B60
B1:B60就是1-60个不重复的随机数字
excel工作表窗口中,同时按ALT和F11两个键,进入VBA编程界面,然后点击VBA菜单;“插入-模块”,在右栏的空白区粘贴代码
回到excel工作表窗口,点击菜单:工具-宏-宏,点选宏的名字 yyy,再点击“执行”按钮
在A1:A60自动生成不重复的随机数
sub yyy()
Dim i As Integer, j As Integer, a(1 To 60) As Integer
Randomize
For i = 1 To 60
a(i) = Int(Rnd * 60) + 1
For j = 1 To i - 1
If a(i) = a(j) Then
j = i - 1
i = i - 1
End If
Next
Next
Range("a1").Resize(i - 1, 1) = Application.Transpose(a)
end sub
使用方法:
1、选择要填充随机数的单元格范围,
2、点击按钮
3、输入随机区间的上限值
4、输入下限值
5、不重复的随机数就自动填充到你选择的单元格内了
注意:
1、如果提示启用宏,则启用哦
2、选择的单元格不要多于随机区间内的整数个数
=--MID(C1,INT(RAND()*(LEN(C1)/2)+1)*2-1,2)
在A1单元格中输入函数=INT(RAND()*999999)
然后在B1单元格中输入=A1,再在B2单元格中输入
=IF(COUNTIF(B$1:B1,A2)=1,"",A2),最后将B列单元格中的数据进行升序排列
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论