社内のプレゼント企画やイベント抽選など、「公平なランダム抽選」を行いたいとき、
Excelがあれば特別なツールを使わなくても誰でも簡単に自動抽選を行うことができます。
Excelには乱数を生成できる関数が複数用意されており、
RAND関数・RANDBETWEEN関数・SORTBY関数などを活用することで、
完全にランダムな順序でデータを並べ替え、当選者を自動的に選ぶことが可能です。
この記事では、
Excelの関数を使った「抽選シートの作り方」と「実務に使える応用例」まで、
初心者でも理解できるように丁寧に解説します。
目次
- ✅ Excelでランダム抽選を行う基本の仕組み
- ✅ RAND関数で簡単にランダム抽選を行う方法
- ・RAND関数とは?
- ・RAND関数を使った抽選手順
- ・結果を固定する方法(重要)
- ✅ RANDBETWEEN関数で整数の抽選番号を生成
- ・構文
- ・抽選番号として使う例
- ✅ SORTBY関数×RANDARRAYで完全自動の抽選リストを作成(Excel 365以降)
- ・構文
- ・実例:応募者を自動でランダム並び替え
- ・応用:当選者数を指定して抽出
- ✅ UNIQUE関数と組み合わせて重複なしの抽選を実現
- ・重複削除+ランダム抽選の一括処理
- ✅ INDEX関数で抽選結果を別シートに自動表示
- ・例
- ✅ RAND+並べ替えを使った手動抽選(旧Excel対応)
- ・手順
- ✅ VBAを使った自動抽選マクロ(上級者向け)
- ・VBAコード例
- ✅ 実務での活用例
- ・1. 社内キャンペーン・景品抽選
- ・2. 顧客アンケート抽選
- ・3. イベントの席順・発表順決め
- ・4. 授業やセミナーでのグループ分け
- ✅ 注意点とコツ
- ・RANDやRANDBETWEENは「揮発性関数」
- ・RANDARRAYはExcel 365以降限定
- ・公平性を保つコツ
- ✅ まとめ:Excelのランダム抽選で公平・効率的な当選管理を実現しよう
✅ Excelでランダム抽選を行う基本の仕組み
Excelの「ランダム抽選」は、以下の3ステップで構成されています。
- 抽選対象(応募者や商品など)の一覧を作る
- 乱数関数でランダム値を生成する
- 乱数を基準に並べ替えや上位抽出を行う
この流れを理解すれば、どんな形の抽選にも応用可能です。
まずは、最も基本的なRAND関数を使った抽選方法から見ていきましょう。
参考:【Excel】ランダムな数字を「重複なし」で作る方法|RAND・RANDBETWEEN
✅ RAND関数で簡単にランダム抽選を行う方法
・RAND関数とは?
構文:
=RAND()
RAND関数は、0以上1未満のランダムな小数を返します。
再計算(F9キーやデータ編集)するたびに新しい値が生成されます。
・RAND関数を使った抽選手順
- A列に応募者リストを作成
例:A2~A21に名前を入力(20名分) - B列に次の式を入力
=RAND()
これで、各応募者にランダムな値が付きます。 - データを並べ替える
データタブ → 「並べ替え」 → 「B列(RAND)」を昇順に設定。 - 上位の行を当選とする
例:上位3名を当選者に設定。
この方法なら、毎回異なる順序で並び替えられ、
完全にランダムな抽選結果が得られます。
・結果を固定する方法(重要)
RAND関数は再計算ごとに値が変わるため、確定後は「値貼り付け」で固定します。
- 当選結果を含む範囲を選択 → Ctrl+C
- 右クリック → 「値として貼り付け」
これで、再計算しても抽選結果が変わらなくなります。
✅ RANDBETWEEN関数で整数の抽選番号を生成
RAND関数が小数を返すのに対して、RANDBETWEEN関数は整数の乱数を生成します。
・構文
=RANDBETWEEN(最小値, 最大値)
例:
=RANDBETWEEN(1,100)
→ 1~100の間の整数をランダムに返す。
・抽選番号として使う例
- A列に応募者名を入力
- B列に次の式を入力
=RANDBETWEEN(1,1000) - 番号の小さい順で並べ替える
これで、各応募者に「抽選番号」が自動で割り振られます。
抽選番号順に並べ替えるだけで、公平な当選決定ができます。
・注意点
RANDBETWEEN関数は重複する数字を生成することがあるため、
抽選番号が被らないようにしたい場合はRAND関数+並べ替え法がおすすめです。
✅ SORTBY関数×RANDARRAYで完全自動の抽選リストを作成(Excel 365以降)
最新のExcel(Microsoft 365・Excel 2021以降)では、
SORTBY関数とRANDARRAY関数を組み合わせるだけで、
1行の数式で完全自動抽選を行うことができます。
・構文
=SORTBY(範囲, RANDARRAY(行数))
参考:【Excel】数字を並び替えると「1, 10, 100, 2」になる原因と解決方法|正しい昇順・降順の作り方
・実例:応募者を自動でランダム並び替え
=SORTBY(A2:A21, RANDARRAY(20))
A2:A21:応募者の一覧RANDARRAY(20):20個の乱数を生成SORTBY:乱数の順に応募者をランダム並び替え
結果として、A列の応募者が完全にランダムな順で表示されます。
上位3名を当選者とすれば、瞬時に抽選結果が得られます。
・応用:当選者数を指定して抽出
抽選対象20人の中から5人を選びたい場合は、
INDEXとSEQUENCE関数を組み合わせます。
=INDEX(SORTBY(A2:A21, RANDARRAY(20)), SEQUENCE(5))
この式は、「A2:A21をランダムに並べ替え、その中の上位5人を抽出」します。
毎回異なる結果が得られ、再現性のあるランダム抽選が可能です。
参考:【Excel】IFNA関数で複数条件を処理する方法|VLOOKUP・INDEX/MATCH・IFとの組み合わせでExcel作業を効率化
✅ UNIQUE関数と組み合わせて重複なしの抽選を実現
応募リストに重複データ(同じ名前やID)が含まれている場合、
そのままRAND関数を使うと公平性が損なわれる可能性があります。
そのようなときは、UNIQUE関数で事前に重複を除外します。
・重複削除+ランダム抽選の一括処理
=INDEX(SORTBY(UNIQUE(A2:A50), RANDARRAY(COUNTA(UNIQUE(A2:A50)))), SEQUENCE(5))
UNIQUE(A2:A50):重複を除外した応募者リストRANDARRAY:乱数で順序を決定SEQUENCE(5):上位5人を抽出
これで、重複なし・完全ランダムな当選者リストが一瞬で作れます。
参考:【Excel】検索システムを作る方法まとめ|関数と機能で簡単に実装する手順
✅ INDEX関数で抽選結果を別シートに自動表示
実務では、抽選結果を別シートに自動表示したいことも多いです。
たとえば「応募者リスト」と「当選者リスト」を分けたい場合、
INDEX関数を使えばリンク付きで結果を出力できます。
・例
応募シート(Sheet1)
A2:A101 → 応募者リスト
抽選結果シート(Sheet2)
B2セルに次の式を入力:
=INDEX(SORTBY(Sheet1!A2:A101, RANDARRAY(COUNTA(Sheet1!A2:A101))), SEQUENCE(10))
これで、Sheet1の応募者を自動的に並べ替え、
上位10人をSheet2に当選者として出力します。
抽選作業を繰り返す必要がなく、関数1本で管理が完結します。
参考:【Excel】XLOOKUP関数で複数条件を扱う方法とは?INDEX・FILTERとの違いも解説【実務対応】
✅ RAND+並べ替えを使った手動抽選(旧Excel対応)
Excel 2016以前など、RANDARRAYやSORTBYが使えない環境でも、
手動操作だけで簡単にランダム抽選を行うことができます。
・手順
- A列に応募者名を入力
- B列に
=RAND()を入力してコピー - B列を基準に並べ替え(昇順)
- 上位の行(例:1~5行)を当選とする
これで誰でも使える「完全手動抽選シート」が完成です。
古いバージョンでも確実に動作します。
・ワンポイント
RAND関数の値を固定しない限り、再計算で結果が変わるため、
確定後は「コピー → 値貼り付け」で固定しておくことを忘れずに。
✅ VBAを使った自動抽選マクロ(上級者向け)
Excelの関数だけでなく、マクロ(VBA)を使えば
ボタン1つで抽選が完了する仕組みも作れます。
・VBAコード例
Sub Lottery()
Dim LastRow As Long, i As Long
Dim DataRange As Range
Dim Arr As Variant
Dim RndIndex As Integer
' 応募者リストを設定
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set DataRange = Range("A2:A" & LastRow)
Arr = DataRange.Value
' ランダム抽選(5名)
Randomize
For i = 1 To 5
RndIndex = Int((UBound(Arr) - LBound(Arr) + 1) * Rnd + LBound(Arr))
Cells(i, 3).Value = Arr(RndIndex, 1)
Next i
MsgBox "抽選完了!結果はC列に表示されました。"
End Sub
このコードを実行すると、
A列のリストから5名をランダムに選び、C列に当選者を表示します。
関数と違い、再計算の影響を受けないため、確定した結果を自動出力できます。
✅ 実務での活用例
Excel抽選機能は、単なるくじ引きだけでなく、
ビジネスや学校、イベント運営など幅広い用途で活躍します。
・1. 社内キャンペーン・景品抽選
応募フォームで集めた社員番号リストをExcelに取り込み、
RAND+SORTBYで自動抽選。公平で透明性のある当選発表が可能です。
・2. 顧客アンケート抽選
アンケート結果から抽選対象を自動判定し、
関数で抽選→上位○件を「当選」としてメール送信に活用。
・3. イベントの席順・発表順決め
発表者やチーム名をランダム順に並び替えることで、
順番を公平に決定できます。再計算で毎回シャッフル可能です。
・4. 授業やセミナーでのグループ分け
参加者リストをランダムに並び替え、上から順にグループ分け。
SORTBY+SEQUENCEで自動グループ割り振りも可能です。
✅ 注意点とコツ
・RANDやRANDBETWEENは「揮発性関数」
シートが再計算されるたびに結果が変わります。
確定した抽選結果を保存したい場合は、必ず「値貼り付け」を行いましょう。
・RANDARRAYはExcel 365以降限定
古いExcel(2016以前)では使用できません。
その場合は、RAND関数+並べ替え手法で代用可能です。
・公平性を保つコツ
RANDやRANDARRAYは非常に精度の高い乱数を生成します。
ただし、完全なランダム性が必要な公的抽選などでは、
抽選日時やシード値を固定するなど、再現性を意識すると安心です。
✅ まとめ:Excelのランダム抽選で公平・効率的な当選管理を実現しよう
- ExcelのRAND関数を使えば、簡単にランダム抽選が可能
- RANDBETWEEN関数は整数乱数で抽選番号を生成できる
- Excel 365では
SORTBY+RANDARRAYで自動抽選が1行で完結 - UNIQUE関数で重複を防ぎ、INDEX関数で別シート出力も可能
- VBAを使えば、ボタン1つで確定抽選まで自動化できる
Excelは、関数を組み合わせるだけで公平で透明性のある抽選システムを構築できます。
社内イベント、販促キャンペーン、学園祭など、あらゆるシーンで応用可能です。
次の抽選は、ぜひExcelでスマートに行ってみましょう!