有時需要在Excel中從某列隨機提取一些數據,而且數據不能被重復提取。例如在進行隨機抽樣時,就需要進行隨機地、不重復地提取操作。在Excel中,可以用多種方法實現從一列中隨機不重復地提取數據,下面介紹其中的一些方法。假如要從A1:A100區域中隨機挑出一些名單:
方法一:RAND函數+排序
1.在B1單元格中輸入公式:
=RAND()
回車后向下填充到B2:B100區域。
2.按照B列進行排序。方法是選擇B1:B100區域中的任意單元格,單擊工具欄中的排序按鈕“A→Z”,A列中的名單就會變成隨機排列了,并且每次單擊排序按鈕都會產生一個新的隨機序列。從A列中復制一些名單到其他區域即可。
方法二:RAND+RANK函數
先用上述方法在B1:B100區域填充RAND函數,然后在C1單元格中輸入公式:
=INDEX($A$1:$A$100,RANK(B1,$B$1:$B$100))
再拖到填充柄向下填充,即可獲得所需的隨機數據。如果要獲得新的隨機數據,按F9鍵即可。這個方法適合于不改變工作表結構的情況。
方法三:VBA代碼
還可以用下面的VBA代碼來進行隨機不重復地提取。假如要從某列(本例為A1:A1000)中隨機不重復地提取100個數據,將其放到指定區域(本例為C1:C100)中:
Sub RandomSelect()
Dim TempArr, TheList(1 To 1000, 1 To 1) As Variant
TempArr = Range("a1:a1000")
For i = 1000 To 1 Step -1
j = Int(Rnd * i) + 1
TheList(i, 1) = TempArr(j, 1)
TempArr(j, 1) = TempArr(i, 1)
Next i
Range("c1:c100") = TheList
End Sub
上述代碼中讀取和寫入數據時沒有用For-Next循環,速度較快,特別適合于數據量較大的情況