如何在 Excel 中從資料清單隨機填入數值?
在 Excel 中從預先定義的清單隨機選取值,是一項常見且實用的操作,廣泛應用於數據分析、模擬、隨機分配、抽樣及測試情境等場景。例如,您可能需要模擬抽獎結果、為品質保證隨機指派測試案例,或在團隊成員間公平分配任務。透過 Excel 自動化此流程,不僅大幅提升工作效率,更能有效降低人為錯誤的風險。
本完整指南將逐步介紹多種達成此目標的方法,涵蓋適合所有使用者的簡易公式解法、進階的 VBA 自動化解決方案,以及如 Kutools for Excel 這類專用且使用者友善的工具。每種方法皆有其獨特優勢與適用情境,以下將詳細解析,協助您選出最契合自身需求的解決方案。
使用公式從資料清單中隨機填入值
本節將逐步介紹幾種實用的公式解法,協助您從指定清單中隨機填入數值。這些方案無需額外安裝,即可快速應用於大多數現代版 Excel。
✅ 公式一:INDEX + RANDBETWEEN 函數
INDEX 與 RANDBETWEEN 函數的組合,是一種經典且跨版本相容的隨機選取方法,適用於快速產生單一或多個可重複的隨機值,例如用於隨機抽樣或模擬資料生成。
使用此方法時,只需將下列公式複製或輸入至空白儲存格(例如 B2),再向下拖曳填滿控點,即可快速產生所需數量的隨機值。請注意,由於公式包含易變函數(如 RANDBETWEEN),每次工作表重新計算時,結果都會自動更新。
=INDEX($A$2:$A$15, RANDBETWEEN(1, COUNTA($A$2:$A$15))) 
- A2:A15:代表您要從中隨機選取資料的清單範圍。
- COUNTA($A$2:$A$15):動態計算清單中的項目數量,確保清單長度變更時公式依然穩定運作!
- RANDBETWEEN(1, n):產生介於 1 與 n(清單中的項目數)之間的隨機整數。
- INDEX(範圍, 數字):從您的清單中擷取對應隨機位置的項目。
注意事項:由於數值會在工作表有任何變動時自動刷新,若您希望保留固定結果,請務必複製已填入的儲存格,並以「貼上為數值」的方式貼上。此外,此方法無法排除重複值—若需確保唯一性,請參考後續章節所述方法或另行處理。
✅ 公式二:INDEX + RANDARRAY 函數(Excel 365 / 2021+)
INDEX 與 RANDARRAY 函數的組合適用於 Excel 365 與 Excel 2021 使用者,能透過動態陣列一次輸出多筆隨機選取結果,大幅簡化大量隨機選取的作業流程。當您需要快速取得特定數量的隨機結果時,此方法尤其實用。但請注意,與前述公式相同,此方法無法確保批次結果中的唯一性。
使用此解決方案時,請將公式輸入至空白儲存格(例如 B2),再按下 Enter,Excel 就會自動將產生的隨機值「溢出」至後續儲存格。例如,下列公式可從清單中輸出 5 個隨機值:
=INDEX(A2:A15, RANDARRAY(5, 1, 1, COUNTA(A2:A15), TRUE)) 
- A2:A15:用於隨機選取的指定資料清單。
- COUNTA(A2:A15):計算目標清單中的項目數量。
- RANDARRAY(5,1,1, COUNTA(...), TRUE):產生 5 個介於 1 與清單最後一個位置之間的隨機整數,並以垂直陣列(1 欄)輸出。
- INDEX(A2:A15, …):將每個隨機數字對應至清單中的相應值。
提示:若需不同數量的隨機值,只需調整 5 在 RANDARRAY(5,1, ...) 中的設定即可。若需固定結果,請務必使用「貼上為數值」方式貼上,因為公式輸出會隨著工作表變動而自動更新。
使用 VBA 從清單中隨機填入值(進階且可自訂的解決方案)
若您需要自動化大規模隨機值分配、避免重複項目,或實現更高程度的自訂化(例如在選取過程中套用複雜邏輯),VBA(Visual Basic for Applications)正是理想選擇。透過 VBA,您不僅能產生真正唯一的隨機選取結果、靈活套用自訂分配邏輯,還能透過單一指令反覆執行任務——非常適合進階模擬、自動化隨機分配,以及處理大型資料集。
此解決方案專為熟悉巨集的使用者,或希望自動化 Excel 工作流程的人士量身打造。
1. 開啟 VBA 編輯器:點選開發人員 > Visual Basic(或按下 )Alt + F11),即可開啟 Microsoft Visual Basic for Applications 視窗。接著,前往插入 > 模組,並將下方程式碼貼入模組視窗:
Sub RandomFillFromList_NoDuplicates()
Dim srcRange As Range
Dim destRange As Range
Dim srcValues As Variant
Dim destCount As Integer
Dim usedIndexes As Object
Dim i As Integer
Dim randIndex As Integer
On Error Resume Next
Set srcRange = Application.InputBox("Select source list", "KutoolsforExcel", Type:=8)
If srcRange Is Nothing Then Exit Sub
Set destRange = Application.InputBox("Select destination range (number of random values to fill)", "KutoolsforExcel", Type:=8)
If destRange Is Nothing Then Exit Sub
srcValues = Application.Transpose(srcRange.Value)
destCount = destRange.Cells.Count
Set usedIndexes = CreateObject("Scripting.Dictionary")
If UBound(srcValues) < destCount Then
MsgBox "Not enough unique items in the source list to fill destination without duplicates.", vbExclamation, "KutoolsforExcel"
Exit Sub
End If
Randomize
For i = 1 To destCount
Do
randIndex = Int(Rnd() * UBound(srcValues)) + 1
Loop While usedIndexes.Exists(randIndex)
usedIndexes(randIndex) = True
destRange.Cells(i).Value = srcValues(randIndex)
Next
End Sub 2. 點擊 VBA 工具列上的
按鈕以執行巨集。巨集將提示您選取(a) 來源清單(即用於挑選值的範圍),以及(b) 列表放置區域(若要提取指定數量的隨機值,只需選取相同數量的儲存格即可)。只要來源清單足夠大,此程式碼即可確保輸出結果不重複;否則,系統將顯示警告。
此 VBA 方法具有以下優點與注意事項:
- 優點:確保隨機且不重複地選取;輕鬆處理超大規模清單與批次作業;重複性任務自動化,簡單又高效!
- 缺點:需使用啟用巨集的 Excel 檔案。若您的活頁簿限制巨集執行,此方法可能不適用;且當目標數量超過來源項目數時,可能會發生錯誤。
- 錯誤提醒:若來源清單中的唯一值數量不足,無法滿足您的請求,巨集將立即通知您。
- 自訂提示:您可以進一步調整程式碼,移除唯一性檢查以允許重複值,或加入加權與篩選邏輯,滿足更專業的應用需求!
使用 Kutools for Excel 從資料清單中隨機選取並填入值(所有版本)
Kutools for Excel 提供簡便又互動的解決方案,能從清單中隨機選取並填入值,是不想撰寫公式或程式碼、卻又希望快速大量處理選取作業並減少手動輸入使用者的最佳選擇!Kutools 更提供彈性控制輸出的選項(例如可指定挑選的值數量),並透過直觀的對話方塊介面輕鬆實現這些功能。
安裝 Kutools for Excel 後,請依照下列步驟使用其內建的隨機選取功能:
- 選取包含您希望隨機挑選之值的範圍。
- 點擊 Kutools > 範圍 > 隨機排序或選擇。請參閱下方截圖:

- 在隨機排序或選擇對話方塊中,切換至選取索引標籤,並執行下列操作:
- 請指定您希望隨機選取的儲存格數量。
- 請務必在儲存格中選擇選中類型選項。
- 最後,點擊確定按鈕。

- 系統將隨機反白或選取指定數量的儲存格,接著您可依需求將這些儲存格複製並貼到其他位置。

除了操作簡便外,Kutools 方法還能有效避免手動隨機化時常見的錯誤,且無需熟悉 Excel 公式或巨集設定。若您希望選取結果中的數值皆為唯一值,請確保來源清單的項目數量多於您打算挑選的數量,並在對話方塊中確認是否有「不重複選取」等相關選項(若可用)。
🔚結論
在 Excel 中從預先定義的清單隨機填入值,可根據不同使用者的技能程度與應用情境,靈活運用多種高效方法:
- 適用於所有 Excel 版本,INDEX 搭配 RANDBETWEEN 函數是快速又可靠的隨機選取方法,特別適合用於允許重複值的清單!
- 若您使用 Excel 365 或 2021,RANDARRAY 與 INDEX 的組合方案能提供更動態的批次選取功能,於需同時產出大量結果時大幅提升效率!
- 對於高度客製化的需求—例如確保無重複值、自動化大規模隨機分配,或處理複雜的選取邏輯—VBA 方法能提供最大的彈性,但使用者需熟悉巨集的執行方式。
- 若您偏好免程式碼且使用者友善的方式,Kutools for Excel 可透過圖形介面輕鬆產生隨機選取結果,無論是初學者或需要快速取得結果的進階使用者都適用!
務必先評估:您需要的是唯一選取結果,還是允許重複?需產生多少個隨機值?以及您對 Excel 公式或巨集的熟悉程度如何?在分享或儲存隨機結果前,請務必使用「貼上為數值」功能,避免因重新計算而導致結果變動。若您想深入探索更多 Excel 解決方案,歡迎造訪我們的 Excel 教學專區,獲取更多實用指南與技巧。
疑難排解建議:請仔細確認清單範圍是否正確;留意易失性函數可能引發的重新計算問題;若採用程式碼型解決方案,務必確認巨集安全性設定已允許執行 VBA。當您在使用 VBA 時遇到錯誤(例如來源清單大小不足),請依提示重新評估範圍設定。
相關文章:
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 LOOKUP:多重條件 VLookup | 多重數值 VLookup | 跨多個工作表 VLookup | 模糊查找…… | |
| 高級下拉列表:快速建立下拉式清單 | 相依式下拉式清單 | 多選下拉式清單…… | |
| 欄位管理員:新增指定數量的欄位|移動欄位|切換隱藏欄位的可見狀態|比較範圍與欄位…… | |
| 精選功能:網格聚焦 | 設計視圖 |增強編輯欄 | 工作簿與工作表管理員 | 資源庫(自動文字)| 日期提取 | 合併工作表 | 加密/解密儲存格 | 依清單傳送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體儲存格/斜體/刪除線……) ...... | |
| 頂尖 15 工具組:12 文字工具(添加文本,刪除特定字符,……)| 50+ 圖表 類型(甘特圖,……)| 40+ 實用公式(基於生日計算年齡,……)| 19 插入工具(插入二維碼,從路徑插入圖片,……)| 12 轉換工具(金額轉大寫,匯率轉換,……)| 7 合併和拆分工具(高級合併行,分割儲存格,……)|……以及更多 |
運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……
Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!
- 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
- 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
- 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!
所有 Kutools 增益集,一個安裝程式
Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!
- 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
- 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
- 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
- 30 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用


