在excel中怎么让随机函数在指定区域内取不重复的值

2024-11-22 18:18:20
推荐回答(3个)
回答(1):

1、如果指定区域为A2:F8,需要在A11:F17得到A2:F8的不重复的随机数据,那么以H2:M8为辅助区域,输入=RAND()  按Ctrl+Enter组合键结束,得到一组随机数;

2、在A11单元格输入以下公式,然后向右向下填充到F17单元格

=INDEX($A$2:$F$8,SUMPRODUCT((SMALL($H$2:$M$8,(ROW(A1)-1)*6+COLUMN(A1))=$H$2:$M$8)*ROW($2:$8))-1,SUMPRODUCT((SMALL($H$2:$M$8,ROW(A1)+COLUMN(B1)-1)=$H$2:$M$8)*COLUMN($H:$M))-7)

公式表示:定位到A2:F8,以H2:M8单元格中的最小值所在的单元格位置所对应的行数和列数,在A2:F8中取数。

因为H2:M8是随机的,得到的数据也是随机的;因为RAND()随机数几乎没有重复的,因此H2:M8的大小排序值也没有重复的,得到的A11:F17的数据随机且不重复。

根据需要,可隐藏H:M列。

回答(2):

比如在A9:F20区域取随机值,可以通过用随机值取行号和列号,用ADDRESS定位单元格,再用INDIRECT取得单元格的值。
A9:F20行号范围是9-20,列号范围是1-6,公式如下:

=INDIRECT(ADDRESS(ROUND(RAND()*11+9,0),ROUND(RAND()*5+1,0)))

补充:但这个方法不能保证绝对不重复,因为行号列号必须是整数,而RAND取的整数值有可能重复。

还有一个办法:
=SMALL($A$9:$F$20,INT(RAND()*COUNT($A$9:$F$20)+1))

回答(3):

这个人的方法倒是可行的
不过应该是要发生在一个已知的条件下
可能的话,请加我hi,我比较感兴趣,可以讨论一下
8点前我在,之后就算了