求職大神,EXCEL問題,如何在一組數據中隨機選擇?
比如說這個表,A1-A30有一組數據,我想在B1-B30,隨機列出A列的數據,但是數據不能重複,如何實現呢?
Excel中,按alt+F11呼出宏編輯界面,Insert 選module,複製以下代碼。按f5運行。
Sub randomize_test()
Dim a%, b%, c%
a = WorksheetFunction.CountA(Range("a1:a" [a65536].End(xlUp).Row))
c = 1
Do While c &<= a
b = Int(Rnd * a) + 1
If Cells(b, 2) &<&> 1 Then
Cells(b, 2) = 1
Cells(b, 1).Copy
Cells(c, 3).Select
ActiveSheet.Paste
c = c + 1
End If
Loop
Columns(2) = ""
End Sub
第一次發的代碼有問題,
循環結果會出現重複數據,
現在已經增加了驗證邏輯,測試後沒有問題。
滿足題主的要求。
a列即便有幾萬行,只要小於65535行業可以自動匹配行數。
(選擇65535這個數字,雖然我目測題主是Excel2013版本,可以用1048576。
因為不知道其他用戶的Excel版本,謹慎起見,我選了65535。
如果是的較新的excel版本可以自己修改成1048576)
你可以添加輔助列,用隨機函數產生一組大小不一的數值,隨後多列排序,根據隨機函數進行排序(A-Z、Z-A無所謂)
排序之後你就可以得倒一組隨機「零亂」的數據B1=if(round(rand()),a1,"")向下填充
太巧了,今天我碰巧寫了這個公式
好像大家的都很複雜呢
數據這麼少,不用VBA啊
玩了半天,終於硬生生用公式把問題解決了,僅供參考啊。
真心不建議用公式解決這個問題。
解決思路:手動設置一個序列數組就是C2的內容,不斷的根據隨機數從數組中刪除已經被提取的數據,同時下一步隨機時把隨機範圍減少。
完成後的圖片
這是公式
取巧的: 鏈接:http://pan.baidu.com/s/1dF4W4KT 密碼:275n
這個只能用VBA來實現了吧。
推薦閱讀:
※為什麼vlookup第一次匹配錯誤第二次重新輸入公式就好了?這種情況是怎麼回事啊?
※如何在excel中實現單格內多數據分解到單格單數據?
※Excel中輸入品名和規格如何自動顯示出價格?
※數據運營常用excel公式大全?
※怎麼學習Excel函數?
TAG:MicrosoftExcel | Excel公式 |