可以利用VBA来生成5000个随机不重复的5位数字。
软件版本:Office2007
方法如下:
1.Alt+F11,输入代码如下:
Sub m()
For i = 1 To 5000 '1到5000循环,生成5000个数
eee:
Cells(i, "A") = Int(Rnd() * 50000) '随机生产一个小于50000的数
If Cells(i, "A").Value < 10000 Then GoTo eee '如果这个数小于10000,重新生成
If Application.WorksheetFunction.CountIf(Range("A:A"), Cells(i, "A")) > 1 Then GoTo eee '如果这个数已经存在了,也重新生成
Next i
End Sub
2.F5执行代码,返回Excel得到结果:
选中A1:A5000,输入下面公式再按Ctrl + Shift + Enter 三键结束
=TEXT(MOD(SMALL(RANDBETWEEN(ROW(1:5000)^0,9999)*100000+ROW(1:5000),ROW(1:5000)),100000),"00000")
PS:公式单元格较多,该公式计算速度有点慢……
效果如图:
在名称框内输入A1:A100000,回车选择此单元格区域。
输入=TEXT(ROW()-1,"00000")
CTRL+ENTER
※选择A列 复制后粘贴数值到A列
在B1中输入或复制粘贴下列公式
=RAND()
回车,双击B1右下角的填充柄(黑色小方块),填充公式到B100000。
选择B列任一非空单元格,单击升序或降序图标
A列即可得到不重复的00000-99999的值
=TEXT(MOD(SMALL(RANDBETWEEN(ROW(1:5000)^0,9999)*10000+ROW(1:5000),ROW(1:5000)),10000),"00000")
楼上的公式是100000,当然慢了,改成10000就会快很多呀。
以0-5000两种方法:
一、rand函数=ROUND(RAND()*5000,0)因为rand函数产生的是0-50的随机数,所以乘100就是0-5000了。又因为rand产生的小数位比较长,所以用round函数四舍五入取整。
二、randbetween函数=RANDBETWEEN(0,5000)不知道这个函数在03版里能不能用。一般这样生成的随机是不重复的。
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件。Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。