要在Excel中生成不重復(fù)的隨機整數(shù)列,例如將1-22這22個數(shù)進行隨機排列,通常用在輔助列中輸入RAND函數(shù)并排序的方法來實現(xiàn)。如果不用輔助列和VBA,用數(shù)組公式也可以實現(xiàn)。在A2單元格中輸入數(shù)組公式:
=LARGE(ROW($1:$22)*(1-COUNTIF($A$1:A1,ROW($1:$22))),INT(RAND()*(23-ROW(A1))+1))
公式輸入完畢按Ctrl+Shift+Enter結(jié)束,然后拖到填充柄填充公式到A23,即可在A2:A23中生成1-22這22個數(shù),并隨機排序。
說明:
1. “ROW($1:$22)”產(chǎn)生一列包含1-22的垂直數(shù)組,如果需要更多的數(shù)值,將“22”改為所需數(shù)值即可。
“1-COUNTIF($A$1:A1,ROW($1:$22))”用COUNTIF函數(shù)判斷已產(chǎn)生的數(shù)值,如果某個數(shù)字已在A列出現(xiàn),則其對應(yīng)位置為0,否則為1。
上述兩項相乘后得到一個包含“0”和未出現(xiàn)數(shù)字的數(shù)組,并作為LARGE函數(shù)的第一個參數(shù)。例如在A9單元格中兩項相乘的結(jié)果為數(shù)組:
{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個數(shù)已在A列中出現(xiàn),其對應(yīng)位置為“0”。
2.“INT(RAND()*(23-ROW(A1))+1)”為LARGE函數(shù)的第二個參數(shù),其作用是產(chǎn)生一個隨機整數(shù),以A9單元格為例,由于已出現(xiàn)7個數(shù)字,還有15個數(shù)字未出現(xiàn),故隨機數(shù)的最大值為15,該項產(chǎn)生一個1-15之間的隨機整數(shù)。
如果要在行中生成隨機整數(shù)列,可用下面的數(shù)組公式,以B3單元格為例:
=LARGE(COLUMN($A3:$V3)*(1-COUNTIF($A3:A3,COLUMN($A3:$V3))),INT(RAND()*(23-COLUMN(A3))+1))
然后向右拖到公式到W3即可。也可選擇B3:W3繼續(xù)向下填充公式在多行中產(chǎn)生隨機整數(shù)列