免費軟體與線上工具1,417影音、圖片與 PDF9153C 開箱評測895生活、旅遊與遊戲798iPhone 與 Mac546LINE 與社群533Google 服務464Windows 與電腦451Android 手機402Office 教學380網路新知372AI 工具117
Office 教學

Excel 小教室 - 如何隨機且「平均」分配項目,比如人員分組

在 Excel 中要隨機且平均分配人員組別,最簡單的方法是利用 RAND 函數產生隨機碼作為輔助欄位,接著使用 RANK 函數進行排名,再透過 MOD 函數求餘數,最後用 INDIRECT 轉換為組別名稱。

今天阿湯又要來解答網友的問題了,給我的這個題目倒是有點難度,問題是這樣的:我想要將人員平均分配組別,且用隨機的方式來做。其實看起來好像很簡單,但其實頗難的,如果單純只是「隨機」分配很簡單,但如果同時要兼顧「平均」有點難度,阿湯思維了幾種做法後,想了一個盡可能簡單的做法給大家參考,用到的函數也都是常見且易用的,以便大家能夠理解,往下來看怎麼做吧。

Excel 隨機分組的準備工作與輔助欄位設定

要將人員隨機且平均分配到指定組別,最簡單的做法是利用輔助欄位產生隨機碼,再透過公式進行計算。

先給大家看一下要做的東西長這樣,假設人員有 A 到 O 共 15 位,我想要將他們平均分配到甲、乙、丙三個組別裡,等於每組是 5 人的話要怎麼做。

Excel 準備 15 位人員名單與三個組別名稱

阿湯本來想用一行函數來全部搞定,但怕大家無法理解內容(很複雜),所以改用輔助的方式來做。

首先,請在右邊的 E 列先打入組別及名稱,這邊我以甲、乙、丙來示範。

接著,F 列是輔助用的隨機碼,這一列長度會和人員長度一樣。函式使用的是 RAND,請直接在 F2 儲存格輸入以下公式:

=RAND()

輸入完成後按下 Enter。

在 F2 儲存格輸入 RAND 函數產生隨機碼

然後在 F2 將函數往下延伸,也就是把滑鼠移到 F2 欄位右下角,出現十字游標後,按住往下拖曳到 F16。這樣 F2 到 F16 就都會產生 RAND() 的隨機數值了。

將 F2 的 RAND 函數公式往下拖曳延伸至 F16

利用 RANK 與 MOD 函數計算隨機平均分配結果

有了隨機碼之後,我們可以利用 RANK 函數進行排名,再透過 MOD 函數求餘數,將人員平均分配到對應的組別數量中。

接下來比較複雜的公式來了,我們在 C2 那欄輸入以下公式:

=INDIRECT("E"&((MOD(RANK(F2,$F$2:$F$16),3)+1)+1))

然後一樣從 C2 延伸公式到 C16(就是滑鼠移到 C2 欄位右下角會出現十字,按住後往下拖曳到 C16 即可)。

接下來說明一下公式,我們先講一下最裡面的 RANK 這一段:

=RANK(F2,$F$2:$F$16)

這是將 F2~F16 的隨機碼排名出來,會得到 1~15 名。所以單純打這一段會出現 1~15 的數字(大家可以試試)。

然後再透過 MOD 這個函數來處理排名:

=MOD(RANK(F2,$F$2:$F$16),3)+1

如果是打這一段,你會發現會顯示的就是 0~2 的數字。MOD 這是用來顯示餘數使用的,詳細用法可以參考 OFFICE 網站。透過這個函數,以 1~15 來說,除以 3 後會得到的餘數會是 0~2。如果你的組別是有五個,那公式裡的 3 就改成 5 就可以。

所以在原本的公式尾數多一個 +1,是為了把 0~2 補成 1~3。如果你不需要甲、乙、丙的組別名稱的話,其實到這個步驟就搞定了,就已經區分出 1~3 的隨機平均分配。

透過 RANK 與 MOD 函數計算出 1 到 3 的隨機組別數字

透過 INDIRECT 函數將數字轉換為組別名稱

若希望分組結果直接顯示為你設定的組別名稱,可以透過 INDIRECT 函數將剛剛算出的數字對應到 E 列的儲存格內容。

最後如果你想要直接將 E 列的甲、乙、丙直接帶入的話,最終公式就是長這樣:

=INDIRECT("E"&((MOD(RANK(F2,$F$2:$F$16),3)+1)+1))

或者

=INDIRECT("E"&(MOD(RANK(F2,$F$2:$F$16),3)+2))

INDIRECT 這個公式是用來顯示欄位值,比如 INDIRECT(E2),那就會顯示 E2 的值,也就是甲。我們剛剛 C 列做到 MOD 為止是顯示 1~3,但我們要指向的內容是 E2~E4,所以在公式尾巴多加了個 1(也就是把原本的 +1 改成 +2),這樣算出來就會是 2~4,搭配 "E" 就會變成 E2~E4,順利顯示 E 列的組別名稱了。

使用 INDIRECT 函數將數字成功轉換為甲乙丙組別名稱

如何固定 Excel 隨機分組結果與人數驗證

完成分組後,由於 RAND 函數只要工作表有變動就會重新計算,因此必須將結果「選擇性貼上為值」來固定;同時也可以利用 COUNTIF 來驗證每組人數是否真的平均。

如果你想要驗證每個組別的人數是否有平均的話,可以在旁邊用 COUNTIF 這個函數來做。這部份阿湯就不特別解說了,COUNTIF 是非常簡易使用的一個函數。

利用 COUNTIF 函數驗證各組別分配到的人數是否平均

最後完整的含驗證畫面就長這樣了。

包含人員名單、組別名稱與 COUNTIF 驗證的完整 Excel 畫面

如果你要分配的量是 15,但要分到四組,會無法整除也可以用嗎?是的,也可以,會像這樣,某一組別少一個人,但依然會盡可能平均分配。

即使總人數無法整除,公式依然能盡可能平均分配組別

由於阿湯是用 RAND 這個函數來做隨機取數,所以當你隨便輸入一格後,排列都會重新來過。因此,分完組別後要固定下來的話,請將 C 列的組別項目全部選取並複製起來。

選取並複製 C 列已經分配好的組別結果

然後在組別的第一個欄位(C2)點擊滑鼠右鍵,選擇「選擇性貼上」。

在 C2 儲存格點擊滑鼠右鍵,點選選擇性貼上

在跳出的視窗中,選擇「值」,然後按下確定。

在選擇性貼上視窗中選擇貼上值,以固定分組結果

這樣就會覆蓋原本的公式,變成單純的文字,就不會再變動了。固定好之後,後面的 DEF 列輔助欄位也都可以清空了。

貼上值後公式轉為純文字,即可將後方輔助欄位清空

文末說明一下為什麼要用 RAND() 來做隨機碼排列。因為 RAND() 產生的隨機值重複機率非常非常的低,當然如果你的樣本有 1 萬組的話,那可能有一點點的機會重複,但原則上很難。會用這方式來做的原因是,如果你是要隨機且不重複產生 1~15 的數字,公式其實也不是簡單就搞定,不如就用 RAND(),反正有加入 COUNTIF 驗證每組人數是否平均就好了,不用那麼麻煩。

提供給大家這篇文章的範例檔:請點我下載

常見問題

Excel 如何隨機且平均分配人員到不同組別?

可以先建立一個輔助欄位使用 RAND() 函數產生隨機碼,接著利用 RANK 函數進行排名,再透過 MOD 函數除以組別數量求餘數,就能達到隨機且平均分組的效果。

為什麼 Excel 隨機分組的結果會一直變動?

因為使用的是 RAND() 函數,只要工作表有任何變動或重新計算,隨機數值就會改變。要固定結果,只需將分組結果複製,並用「選擇性貼上」為「值」即可覆蓋公式。

如果總人數無法被組別數量整除,這個分組公式還適用嗎?

依然適用。如果人數無法整除(例如 15 人分 4 組),公式會自動盡可能平均分配,只會出現某一組別少一個人的情況,不會造成錯誤。

如何在 Excel 中驗證各組分配到的人數是否平均?

可以在旁邊的空白欄位使用 COUNTIF 函數,選取分組結果的範圍並指定各組別名稱作為條件,就能快速計算出每一組實際分配到的人數。

(本文於 2026 年 10 月更新:補充步驟說明與常見問題)

這篇收錄在「Excel 教學總整理」,同一主題的其他教學都依小主題整理在那裡。