「チーム分けをランダムで決めたい」「社員を公平に部署ごとに振り分けたい」「プレゼント企画で当選者を均等に分けたい」──
そんなときに便利なのが、Excelでできるランダム振り分けの仕組みです。
Excelの「RAND関数」「RANDBETWEEN関数」「SORTBY関数」「MOD関数」などを使えば、
数百人規模の名簿でもワンクリックで公平かつ自動的にランダム分配できます。
この記事では、関数を使った簡単な方法から、最新のExcel関数を活用した動的な振り分け方法まで、
実務でそのまま使えるテクニックをわかりやすく解説します。
目次
- ✅ ランダム振り分けの基本仕組みを理解しよう
- 例:10人の名前を2グループにランダムで振り分けたい場合
- ✅ 方法① RAND関数+MOD関数でシンプルにランダム振り分け
- ・振り分け手順
- ・3グループ以上に分けたい場合
- ✅ 方法② SORTBY関数×RANDARRAY関数で自動シャッフル(Excel 365以降)
- ・SORTBY関数の構文
- ・実例:10人をランダム順に表示
- ・応用:ランダム順でグループ番号を自動付与
- ・例:4グループに均等振り分け
- ✅ 方法③ RANDBETWEEN関数でグループ番号を直接ランダム生成
- ・RANDBETWEEN関数の構文
- ・生成手順
- ✅ 方法④ RAND関数×並べ替えで手動でもできる簡単振り分け(旧バージョン対応)
- ・振り分け手順
- ・例:2グループに分ける場合
- ✅ 応用①:チーム人数を均等にするランダム振り分け
- ・構文(Excel 365対応)
- ・組み合わせ例
- ✅ 応用②:部署や支店ごとにランダム振り分けを行う
- ・例:営業部だけランダム振り分け
- ✅ 応用③:VBAで自動実行できるランダム振り分けマクロ
- ・コード例
- ✅ 実務での活用シーン
- ・1. チーム分け・席順決め
- ・2. キャンペーンの応募者のランダム振り分け
- ・3. 商品配布やプレゼントの抽選
- ・4. データ分析のトレーニング・テスト分割
- ✅ 注意点とコツ
- ✅ まとめ:Excelのランダム振り分けで公平・効率的なグループ管理を実現しよう
✅ ランダム振り分けの基本仕組みを理解しよう
Excelでランダム振り分けを行うには、
「①乱数を生成 → ②並べ替え → ③順番やグループを割り当てる」という流れが基本です。
この考え方を理解しておけば、人数やグループ数が変わっても柔軟に対応できます。
例:10人の名前を2グループにランダムで振り分けたい場合
| 名前 | 乱数 | グループ |
|---|---|---|
| 山田 | 0.482 | 1 |
| 佐藤 | 0.913 | 2 |
| 田中 | 0.151 | 1 |
| 高橋 | 0.777 | 2 |
RAND関数でランダムな数値を作り、それを並べ替えや計算に利用してグループを振り分けます。
では実際の方法を順番に見ていきましょう。
参考:【Excel】「指定した数字の中からランダムに選ぶ」方法を徹底解説
✅ 方法① RAND関数+MOD関数でシンプルにランダム振り分け
最も手軽な方法が「RAND関数+MOD関数」を組み合わせるやり方です。
どのExcelバージョンでも使える基本の構成です。
・振り分け手順
- A列に名前を入力(例:A2:A21)
- B列に乱数を生成
=RAND() - C列に次の式を入力:
=MOD(RANK.EQ(B2,$B$2:$B$21),2)+1
この数式の仕組みは以下の通りです。
RANK.EQで乱数の順位を求めるMOD(...,2)で2グループに分割- 「+1」でグループ番号を1または2に設定
結果、A列の名前がランダムに2つのグループへ均等に振り分けられます。
・3グループ以上に分けたい場合
3グループなら以下のように変更します。
=MOD(RANK.EQ(B2,$B$2:$B$21),3)+1
これで自動的に「1~3」のいずれかのグループ番号が割り振られます。
グループ数を変えるだけで柔軟に対応できる点がポイントです。
参考:【Excel】最頻値を求める方法まとめ|MODE関数・活用例でデータ分析を効率化
✅ 方法② SORTBY関数×RANDARRAY関数で自動シャッフル(Excel 365以降)
Excel 365やExcel 2021以降を使っているなら、
最新関数「SORTBY」と「RANDARRAY」で、わずか1行の関数で自動振り分けが可能です。
・SORTBY関数の構文
=SORTBY(範囲, RANDARRAY(行数))
これだけで指定した範囲をランダム順に並び替えられます。
・実例:10人をランダム順に表示
=SORTBY(A2:A11, RANDARRAY(10))
これにより、A列の10人が完全ランダムな順序で並び替えられます。
並べ替えボタンを押す必要もなく、関数だけで順序を変えられるのが特徴です。
参考:【Excel】降順にできないときの原因と解決方法|数値・日付・文字列の正しい並べ替え方
・応用:ランダム順でグループ番号を自動付与
上記の式に「SEQUENCE」関数を組み合わせると、
グループ番号を自動的に割り振ることもできます。
=CHOOSE({1,2}, SEQUENCE(ROWS(A2:A21)), SORTBY(A2:A21, RANDARRAY(ROWS(A2:A21))))
1列目に順番番号、2列目にランダム順の名前が表示されます。
さらにMOD関数を使えば、指定数のグループに均等分配も可能です。
参考:【Excel】ランダムな数字を「重複なし」で作る方法|RAND・RANDBETWEEN
・例:4グループに均等振り分け
=CHOOSE({1,2,3}, SORTBY(A2:A21, RANDARRAY(ROWS(A2:A21))), SEQUENCE(ROWS(A2:A21)), MOD(SEQUENCE(ROWS(A2:A21))-1,4)+1)
- 1列目:名前
- 2列目:順番番号
- 3列目:グループ番号(1~4)
これで、入力人数が変わっても自動で4グループに振り分けられます。
まさに「完全自動ランダム分配」と言える方法です。
✅ 方法③ RANDBETWEEN関数でグループ番号を直接ランダム生成
もう少し直感的に「グループ番号だけをランダムで決めたい」場合には、
RANDBETWEEN関数を使う方法もおすすめです。
・RANDBETWEEN関数の構文
=RANDBETWEEN(1, グループ数)
例:
=RANDBETWEEN(1,3)
→ 「1」「2」「3」のいずれかをランダムに返す。
・生成手順
- A列に名前を入力
- B列に次の式を入力:
=RANDBETWEEN(1,3) - これで各人に1~3のランダムなグループ番号が割り振られます。
・注意点
RANDBETWEEN関数は重複や偏りが発生することがあります。
人数を均等に分けたい場合には、RAND+MODの方法がより確実です。
✅ 方法④ RAND関数×並べ替えで手動でもできる簡単振り分け(旧バージョン対応)
古いExcelバージョン(2016以前)を使っている場合でも、
RAND関数と並べ替え機能だけで公平な振り分けが可能です。
・振り分け手順
- A列に名前を入力
- B列に
=RAND()を入力してコピー - 「データ」タブ → 「並べ替え」 → 「B列」を基準に昇順
- 並び替えた順に番号を付け、グループごとに分ける
・例:2グループに分ける場合
並べ替え後、上位半分を「グループ1」、下位半分を「グループ2」とします。
これで重複なし・偏りなしのランダム分配が簡単に実現できます。
✅ 応用①:チーム人数を均等にするランダム振り分け
人数をできるだけ均等にしたい場合、次の方法が最もバランスが取れています。
・構文(Excel 365対応)
=MOD(SEQUENCE(ROWS(A2:A21))-1,4)+1
この式は、上から順に「1,2,3,4,1,2,3,4…」と繰り返す数列を作ります。
これをランダム順のリストと組み合わせると、均等な人数でグループ化できます。
・組み合わせ例
=CHOOSE({1,2,3}, SORTBY(A2:A21, RANDARRAY(ROWS(A2:A21))), SEQUENCE(ROWS(A2:A21)), MOD(SEQUENCE(ROWS(A2:A21))-1,4)+1)
グループ1~4に均等に人が振り分けられる構成です。
学校の班分けやイベントのチーム作成などに最適です。
✅ 応用②:部署や支店ごとにランダム振り分けを行う
部門ごとに人数が異なる場合、
「IF関数」や「FILTER関数」を組み合わせると柔軟な制御が可能です。
・例:営業部だけランダム振り分け
=SORTBY(FILTER(A2:B100, B2:B100="営業部"), RANDARRAY(COUNTA(FILTER(A2:B100, B2:B100="営業部"))))
この式では、B列に「部署名」があり、「営業部」だけを抽出してランダム順に並び替えます。
部署別のシャッフルを同じワークシート上で行いたい場合に役立ちます。
✅ 応用③:VBAで自動実行できるランダム振り分けマクロ
関数操作が苦手な場合は、VBA(マクロ)を使って自動振り分けを行う方法もあります。
・コード例
Sub RandomAssign()
Dim lastRow As Long, i As Long, grp As Integer
Dim rng As Range
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("A2:A" & lastRow)
' ランダム並べ替え
rng.Offset(0, 1).Formula = "=RAND()"
rng.Resize(, 2).Sort Key1:=rng.Offset(0, 1), Order1:=xlAscending
' グループ番号を自動付与(3グループ例)
grp = 1
For i = 2 To lastRow
Cells(i, 3).Value = grp
grp = grp + 1
If grp > 3 Then grp = 1
Next i
End Sub
A列に名前を入れてこのマクロを実行すると、
B列に乱数、C列にグループ番号が自動的に入力されます。
1クリックで公平なランダム振り分けが完了します。
✅ 実務での活用シーン
・1. チーム分け・席順決め
プロジェクトやイベントのチーム分けに。
公平に決めたいときはRAND+MOD、バージョンが新しいならSORTBY+RANDARRAYで効率化。
・2. キャンペーンの応募者のランダム振り分け
応募者データを複数担当者に均等分配する際に便利です。
COUNT関数を使って自動的に人数を管理すれば負担が減ります。
・3. 商品配布やプレゼントの抽選
商品を複数のグループに振り分けて当選者を決めるとき、
重複なしのランダム化が役立ちます。
・4. データ分析のトレーニング・テスト分割
データ分析では、全体データをトレーニング・テストにランダムに分ける処理が必須。
RAND関数で0.8以上なら「テスト」など、しきい値で分割できます。
=IF(RAND()<=0.8,"学習用","テスト用")
参考:【Excel】IF関数で「#N/Aならば」を判定する方法とは?エラー制御で見やすいExcel表を作ろう
✅ 注意点とコツ
- RAND・RANDBETWEENは再計算で結果が変わる
→ 固定化するには「値貼り付け」を行う。 - RANDARRAY・SORTBYはExcel 365以降で使用可能
→ 旧バージョンではRAND+並べ替えで代用。 - 大量データでは計算が重くなる
→ 必要箇所だけ関数を使用し、不要なセルは削除する。
✅ まとめ:Excelのランダム振り分けで公平・効率的なグループ管理を実現しよう
- RAND+MOD関数でシンプルなランダム分配が可能
- Excel 365ならSORTBY+RANDARRAYで完全自動化
- 均等なグループ分けにはSEQUENCEとMODを活用
- 部署別・条件別振り分けもFILTER関数で柔軟に対応
- VBAを使えばボタン1つで即実行できる
Excelのランダム振り分けを活用すれば、
くじ引き・チーム分け・抽選・データ分割などあらゆる場面で「公平で効率的な自動処理」が実現できます。
関数を少し組み合わせるだけで、業務の手間を劇的に減らせる強力な手法です。