EXCEL RAND()公式 如何避免产生重复的随机数
小数重复机率小,取整机率更大,实际我要取整用,有没有更好的办法。或者是判断一下有重复后做出提示重新再取也好,有没有哪个函数可以判断区域内有没有重复? 展开
工具/材料:Microsoft Office Excel2016版,Excel表格。
1、首先选中Excel表格,双击打开。
2、然后在该界面中,选中要显示随机数的单元格。
3、再者在该界面中,公示框中输入随机数公式“=RAND()”。
4、其次在该界面中,选中单元格右下角,向下拖动。
5、继续在该界面中,选中要用的随机数单元格,右键点击“复制”选项。
6、然后在该界面中,选中第二列,右键点击“粘贴”选项。
7、然后在该界面中,选中要显示不重复的随机数的单元格。
8、再者在该界面中,公示框中输入不重复的随机数公式“=RANK(B1,B$1:B$10)”。
9、其次在该界面中,选中单元格右下角,向下拖动。
10、最后在该界面中,成功显示不产生重复的随机数的单元格。
Excel 用随机 公式 产生不重复随机数,需要启用迭代计算:
1, Excel 选项 --启用迭代计算,迭代次数设为30000次,如图:
2, 假设要在A1:A10 生成10个 1~30 内 的不重复随机 整数:
在A1 输入 公式:
=IF(COUNTIF(A$1:A$10,A1)=1,A1,RANDBETWEEN(1,30))
公式下拉到 A10 , 即可生成 10个 固定 不重复 随机数
如果需要重新生成 ,需要重新从A1 下拉公式到A10:
如图:
==========
注意如果生成数据 个数较多 需要计算次数 会很多,Excel右下角会显示计算进度,
如果一次没有完成 需要按F9刷新
如果生成不重复数据超过20个,建议不要用这公式了
可以通过 countif 函数来判定是否重复。
网上搜了很多,其实都会重复,我零基础开始查阅百度研究了近7个小时,终于弄好了。方法有点笨不算太完美,不够优化,但99.9%不会出错,剩下0.1%是因为我不清楚RAND()随机的数是不是真的不重复。
第一步,找到3竖列空白的编辑区域(我是重新创了一个工作表来用,方便隐藏)。
第二步,求随机不重复数。在A1输入”=RAND()“,往下拖N个单元格(N为你的取值范围,举例为80吧)。
第三步,为生成的随机数排序。在B1输入“=SMALL($A$1:$A$80,ROW($A1))”,往下拖N个单元格(SMALL括号第一组代表一个区域,第二组输入数字,表示第几小,ROW指单元格在第几行,$A1表示只锁定A,1可以竖向拖动改变,这里ROW($A1)表示数字1,整个公式说在A1:A80范围里第1小的数是多少)。
第四步,数据溯源,对选中的单元格是在 指定的区域里第几行。在C1处输入“=MATCH(B1,$A:$A,0)”,往下拖X个单元格(X要≤N,为你需要用的单元格数量,MATCH表示B1值在A竖列里属于整个工作表的第几行,这也是我选择在第一行开始弄,可以用就行,优化对于我太复杂了)。
-------------------------------------------------------------------------------------
最后,需要横向输入的,又怕不小心横向拖动而改变被引用的工作表数字,可以在编辑随机不重复数据工作表里的空白区域手输要引用的单元格,转横向,再引用,我是这么解决的。