今天分享一个好玩的数组公式:通过Large+Countif+Randbetween+If函数生成随机不重复的整数。
如下图所示,随机生成1-10的不重复数,在A2单元格输入任意1到10的数字,在A3单元格输入公式并向下填充:=LARGE(IF(COUNTIF($A$2:A2,ROW($A$1:$A$10))=0,ROW($A$1:$A$10)),RANDBETWEEN(1,10-ROW(A1)))。

ROW($A$1:$A$10):返回一个数组,包含从1到10的数字;
COUNTIF($A$2:A2,ROW(...)):计算从$A$2到当前单元格(动态的,从A2到A10)的范围内每个数字,在上述数组中出现的次数,如$A$2到A2单元格8出现的次数{0,0,0,0,0,0,0,1,0,0},$A$2到A3单元格8和3出现的次数{0,0,1,0,0,0,0,1,0,0},1表示已生成的数字,0表示未生成的数字;
IF(COUNTIF(...)=0,ROW(...)):如果某个数字从$A$2到当前单元格范围内尚未出现,则IF函数返回该数字,否则返回空字符串,这个公式创建了一个只包含尚未生成的数字的数组,如$A$2到A2的数组{1,2,3,4,5,6,7,FALSE,9,10},$A$2到A3的数组{1,2,FALSE,4,5,6,7,FALSE,9,10};
RANDBETWEEN(1,10-ROW(A1)):RANDBETWEEN函数生成一个介于1和10-ROW(A1)之间的随机数,10-ROW(A1)往下填充的结果是9,8,7,6,5,4,3,2,1;
LARGE(IF(...), RANDBETWEEN(...)):LARGE函数返回数组中第k大的值,其中k是RANDBETWEEN函数生成的随机数,这个公式表示从未生成的数字里随机生成一个。
希望这篇文章对你有帮助,您的点赞和收藏是我持续更新文章的最大动力,感谢您的支持。