在excel中利用数组公式生成不重复的随机整数列

要在Excel中生成不重复的随机整数列 , 例如将1-22这22个数进行随机排列 , 通常用在辅助列中输入RAND函数并排序的方法来实现 。如果不用辅助列和VBA , 用数组公式也可以实现 。在A2单元格中输入数组公式:
=LARGE(ROW($1:$22)*(1-COUNTIF($A$1:A1,ROW($1:$22))),INT(RAND()*(23-ROW(A1))+1))
公式输入完毕按Ctrl+Shift+Enter结束 , 然后拖到填充柄填充公式到A23 , 即可在A2:A23中生成1-22这22个数 , 并随机排序 。
说明:
1. “ROW($1:$22)”产生一列包含1-22的垂直数组 , 如果需要更多的数值 , 将“22”改为所需数值即可 。
“1-COUNTIF($A$1:A1,ROW($1:$22))”用COUNTIF函数判断已产生的数值 , 如果某个数字已在A列出现 , 则其对应位置为0 , 否则为1 。
上述两项相乘后得到一个包含“0”和未出现数字的数组 , 并作为LARGE函数的第一个参数 。例如在A9单元格中两项相乘的结果为数组:
{0;0;3;4;0;6;0;8;9;10;11;0;0;14;15;16;17;18;19;20;0;22}
其中“13、7、5、1、12、2、21”这7个数已在A列中出现 , 其对应位置为“0” 。
2.“INT(RAND()*(23-ROW(A1))+1)”为LARGE函数的第二个参数 , 其作用是产生一个随机整数 , 以A9单元格为例 , 由于已出现7个数字 , 还有15个数字未出现 , 故随机数的最大值为15 , 该项产生一个1-15之间的随机整数 。
如果要在行中生成随机整数列 , 可用下面的数组公式 , 以B3单元格为例:
=LARGE(COLUMN($A3:$V3)*(1-COUNTIF($A3:A3,COLUMN($A3:$V3))),INT(RAND()*(23-COLUMN(A3))+1))
然后向右拖到公式到W3即可 。也可选择B3:W3继续向下填充公式在多行中产生随机整数列 , 如图 。
【在excel中利用数组公式生成不重复的随机整数列】

    推荐阅读