要在Excel中生成不重復(fù)的隨機(jī)整數(shù)列,例如將1-22這22個(gè)數(shù)進(jìn)行隨機(jī)排列,通常用在輔助列中輸入RAND函數(shù)并排序的方法來(lái)實(shí)現(xiàn)。如果不用輔助列和VBA,用數(shù)組公式也可以實(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個(gè)數(shù),并隨機(jī)排序。
說(shuō)明:
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ù)值,如果某個(gè)數(shù)字已在A列出現(xiàn),則其對(duì)應(yīng)位置為0,否則為1。
上述兩項(xiàng)相乘后得到一個(gè)包含“0”和未出現(xiàn)數(shù)字的數(shù)組,并作為L(zhǎng)ARGE函數(shù)的第一個(gè)參數(shù)。例如在A9單元格中兩項(xiàng)相乘的結(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個(gè)數(shù)已在A列中出現(xiàn),其對(duì)應(yīng)位置為“0”。
2.“INT(RAND()*(23-ROW(A1))+1)”為L(zhǎng)ARGE函數(shù)的第二個(gè)參數(shù),其作用是產(chǎn)生一個(gè)隨機(jī)整數(shù),以A9單元格為例,由于已出現(xiàn)7個(gè)數(shù)字,還有15個(gè)數(shù)字未出現(xiàn),故隨機(jī)數(shù)的最大值為15,該項(xiàng)產(chǎn)生一個(gè)1-15之間的隨機(jī)整數(shù)。
如果要在行中生成隨機(jī)整數(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)生隨機(jī)整數(shù)列