要在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繼續向下填充公式在多行中產生隨機整數列