
使用排序輔助列、INDEX與RANK組合、動態數組函數或VBA宏可在Excel中生成不重復隨機數。1、排序法為數字列添加RAND值后排序;2、RANK法用RANK+COUNTIF生成唯一排名并索引數值;3、動態數組法用SORTBY與RANDARRAY打亂SEQUENCE序列;4、VBA法通過字典對象循環插入隨機數避免重復,適用于高頻或復雜需求場景。
如果您需要在Excel中生成一組不重復的隨機數,例如用于抽獎、抽樣或數據測試,直接使用RAND或RANDBETWEEN函數可能會產生重復值。以下是幾種有效的方法來確保生成的隨機數完全不重復。
本文運行環境:DellXPS13,Windows11
一、使用排序輔助列生成不重復隨機數
該方法通過為一組有序數字添加隨機權重,再按權重排序,從而打亂順序并提取所需數量的不重復數值。
1、在A列輸入需要的數字范圍,例如從1到100,可在A1輸入1,A2輸入2,選中后雙擊填充柄完成自動填充。
2、在B1單元格輸入公式:=RAND(),然后拖動填充至與A列相同行數,為每個數字分配一個隨機值。
3、選中A列和B列的數據區域,點擊“數據”選項卡中的“排序”按鈕,選擇按B列升序或降序排列。
4、排序完成后,A列中的數值即為隨機打亂順序的不重復數字,可復制前N個作為結果使用。
二、利用INDEX與RANK組合提取無重復隨機序列
此方法基于RAND函數生成的隨機值進行排名,并通過排名索引原始序列,避免重復輸出。
1、在C列輸入公式:=RAND(),共填寫N行(如需10個不重復數,則填10行)。
2、在D1單元格輸入公式:=RANK(C1,C:C)+COUNTIF(C$1:C1,C1)-1,向下填充以獲得唯一的排名編號。
3、假設基礎數字列表位于F列(如F1:F100包含1到100),在G1輸入公式:=INDEX(F:F,D1),向下填充即可得到對應數量的不重復隨機數。
三、使用動態數組函數(適用于Excel365或Excel)
新版本Excel支持動態數組功能,可通過簡潔公式一次性生成不重復隨機數序列。
1、在任意空白單元格輸入以下公式:=INDEX(SORTBY(SEQUENCE(100),RANDARRAY(100)),SEQUENCE(10))。
2、該公式含義是:生成1到100的序列,用RANDARRAY生成100個隨機數作為排序依據,SORTBY按隨機數打亂順序,最后用INDEX取出前10個值。
3、若需調整范圍或數量,修改SEQUENCE的第一個參數為目標總數,最后一個SEQUENCE參數為目標提取個數即可。
四、通過VBA宏代碼批量生成不重復隨機數
VBA可以精確控制邏輯流程,適合需要頻繁生成或復雜條件下的場景。
1、按下Alt+F11打開VBA器,在新建模塊中粘貼以下代碼:
SubGenerateUniqueRandom()DimdictAsObjectSetdict=CreateObject("scripting.Dictionary")RandomizeDoWhiledict.Countnum=Int((100*Rnd)+1)IfNotdict.Exists(num)Thendict.Addnum,1LoopRange("A1").Resize(10,1)=Application.Transpose(dict.Keys)EndSub
2、關閉器,返回Excel,按下Alt+F8運行宏GenerateUniqueRandom。
3、程序將在A1:A10輸出10個1到100之間的不重復隨機整數。
以上就是Excel如何生成一組不重復的隨機數_Excel隨機不重復數生成教程的詳細內容,!

