Excelで乱数を使うときに、「ランダムな数字を生成したいけど、重複は避けたい」という場面は非常に多くあります。
たとえば、
- 抽選番号を1〜100の範囲で重複なしで割り当てたい
- ランダムな社員番号・商品コードを生成したい
- シミュレーションやサンプリングのために一意な乱数リストを作りたい
単純に「=RANDBETWEEN(1,100)」を使うと、同じ数値が複数回出てしまいます。
Excelには「重複しない乱数」を直接作る関数はありませんが、
関数の組み合わせや並べ替えのテクニックで簡単に実現できます。
この記事では、重複しないランダム数字をExcelで生成する方法を
初心者にもわかりやすく、かつ実務で使える形で解説します。
目次
- ✅ 基本:RANDBETWEEN関数でランダム数字を作る
- ・RANDBETWEEN関数の構文
- ✅ 方法①:RAND関数+並べ替えで重複なしの乱数を作る
- ・重複なしで並べ替えの手順
- ✅ 方法②:SORTBY関数で一発でランダム順に並べ替える(Excel 365以降)
- ・ランダムに並べ替える構文
- ・例:1〜100の数字をランダム順に並べ替える
- ・例:特定範囲だけ乱数化
- ✅ 方法③:SEQUENCE関数で範囲を自動生成+ランダム化
- ・範囲を指定して自動生成する構文
- ・例1:1〜100の重複なし乱数リスト
- ・例2:10〜99の範囲で重複なし
- ・例3:特定範囲を抽出(上位10件だけ)
- ✅ 方法④:RANDBETWEEN関数+COUNTIFで重複チェック(古いExcel対応)
- ✅ 方法⑤:重複しない乱数の上位n件を抽出する
- ・例:1〜100の中からランダムに10件
- ✅ 乱数を固定して再計算を防ぐ(重複保持)
- ・操作手順
- ✅ 実務応用例:重複なし乱数の使いどころ
- ✅ RPA・Power Automateと組み合わせて完全自動化も可能
- ✅ まとめ:Excelで重複なしのランダム数字を自在に生成しよう!
✅ 基本:RANDBETWEEN関数でランダム数字を作る
まずは基本となる関数から確認しておきましょう。
・RANDBETWEEN関数の構文
"=RANDBETWEEN(最小値, 最大値)"
・例
"=RANDBETWEEN(1,100)"
1〜100の範囲でランダムな整数を生成します。
ただし、このままでは同じ数字が複数回出る可能性があります。
セル | 結果 |
---|---|
A2 | 17 |
A3 | 42 |
A4 | 17 ←重複発生! |
したがって、RANDBETWEEN単体では「重複しない」保証がありません。
次の章から、重複しないようにする方法を紹介します。
✅ 方法①:RAND関数+並べ替えで重複なしの乱数を作る
最も簡単で確実な方法が、RAND関数を使ってランダム並べ替えを行う方法です。
この方法なら、範囲内の数字を「一意の乱数順」に並べ替えることができます。
・重複なしで並べ替えの手順
- 1〜100などの連番を作る
A列に「1」「2」「3」…と入力(またはドラッグ) - 隣の列にRAND関数を入力
B2セルに「=RAND()」と入力し、下までコピー - B列をキーに並べ替え
- [データ] → [並べ替え] → 「B列」を昇順(または降順)に設定
- これでA列の数字がランダム順に並び替わる
A列(結果) | B列(RAND) |
---|---|
57 | 0.013 |
12 | 0.052 |
89 | 0.122 |
3 | 0.308 |
・POINT
- RAND関数は毎回異なる0〜1の小数を生成
- 並べ替えることで「重複しないランダム順リスト」が完成
- 数値を再利用したい場合は「値貼り付け」で固定
・応用例
社員ID・顧客番号などの「順番をランダム化したい」ケースに最適です。
同じ数は1つもないため、「重複なし」を完全に保証できます。
参考:【Excel】昇順に並べ替えできない原因と解決方法|数字・日付・文字列ごとの対処法
✅ 方法②:SORTBY関数で一発でランダム順に並べ替える(Excel 365以降)
Excel 365または2021以降をお使いなら、
SORTBY関数を使うと一瞬で重複なしの乱数リストを作成できます。
・ランダムに並べ替える構文
"=SORTBY(範囲, RANDARRAY(範囲の行数))"
・例:1〜100の数字をランダム順に並べ替える
- A列に1〜100の連番を入力
- 別のセルに次の式を入力
"=SORTBY(A2:A101,RANDARRAY(ROWS(A2:A101)))"
・結果
A列(元データ) | 結果 |
---|---|
1〜100 | ランダムにシャッフルされた100個の数字 |
・POINT
- RANDARRAYは乱数の配列を自動生成
- SORTBYでその乱数を使って並べ替える
- 一度の式で「重複しない乱数順」が完成
・例:特定範囲だけ乱数化
"=SORTBY(SEQUENCE(50,1,1,1),RANDARRAY(50))"
→ 1〜50の数字を重複なしでランダムに並べ替える。
この方法は、RAND+並べ替えの関数版とも言えます。
✅ 方法③:SEQUENCE関数で範囲を自動生成+ランダム化
Excel 365以降なら、SEQUENCE関数を使えば、連番の入力すら不要です。
・範囲を指定して自動生成する構文
"=SORTBY(SEQUENCE(個数,1,開始値,増分),RANDARRAY(個数))"
・例1:1〜100の重複なし乱数リスト
"=SORTBY(SEQUENCE(100,1,1,1),RANDARRAY(100))"
結果:1〜100がランダム順に並ぶ
・例2:10〜99の範囲で重複なし
"=SORTBY(SEQUENCE(90,1,10,1),RANDARRAY(90))"
結果:10〜99のランダム順リスト
・例3:特定範囲を抽出(上位10件だけ)
"=INDEX(SORTBY(SEQUENCE(100,1,1,1),RANDARRAY(100)),SEQUENCE(10))"
→ 1〜100の中からランダムに10件抽出
・POINT
- RANDARRAY+SEQUENCEの組み合わせで完全自動化
- 「範囲」「件数」「順番」をすべて関数で制御
- 再計算するたびにランダム化される
RANDARRAY関数が使える環境では、最もスマートな方法です。
✅ 方法④:RANDBETWEEN関数+COUNTIFで重複チェック(古いExcel対応)
古いバージョンのExcel(RANDARRAYが使えない場合)でも、
COUNTIF関数を使って重複を避けながら乱数を作る方法があります。
・手順
- A2セルに次の式を入力
"=RANDBETWEEN(1,100)" - B2セルに次の式を入力
"=COUNTIF($A$2:A2,A2)" - A列の乱数を下にコピー
・結果
A列 | B列 | 判定 |
---|---|---|
17 | 1 | ○ |
42 | 1 | ○ |
17 | 2 | ×(重複) |
B列で2以上になった行が重複データです。
これを使えば、重複している行だけを削除・再計算することで、
古いExcelでも重複なし乱数を管理できます。
・POINT
- COUNTIFで「何回出たか」をカウント
- 重複データは手動またはフィルターで除外
- 手間はかかるが互換性が高い
✅ 方法⑤:重複しない乱数の上位n件を抽出する
ランダムな順番のリストから特定件数だけ抜き出す場合は、
INDEX関数やSEQUENCE関数を組み合わせます。
・例:1〜100の中からランダムに10件
"=INDEX(SORTBY(SEQUENCE(100,1,1,1),RANDARRAY(100)),SEQUENCE(10))"
結果:1〜100のうちランダムに10個の重複なし数字が出力される。
・POINT
- SORTBYでランダム順を作る
- SEQUENCEで件数を制御
- INDEXで上位だけ取得
この組み合わせは、抽選処理・サンプリング・乱数テストなどで重宝します。
✅ 乱数を固定して再計算を防ぐ(重複保持)
ExcelのRANDやRANDARRAYは、再計算時に値が変わります。
一度作った「重複なし乱数リスト」を固定したい場合は、
値貼り付けで確定させましょう。
・操作手順
- 乱数リスト全体を選択
- Ctrl + C(コピー)
- 右クリック → 「形式を選択して貼り付け」 → 「値」
これで、再計算しても乱数が変わらなくなります。
・POINT
- ランダム抽選の結果を保存したいときに必須
- シート再計算(F9)やブック再起動でも変わらない
✅ 実務応用例:重複なし乱数の使いどころ
用途 | 内容 | 活用ポイント |
---|---|---|
抽選番号作成 | 1〜100の番号をランダムで割り当て | 公平な抽選を再現 |
社員IDランダム発行 | IDを重複なしで付与 | データの重複防止 |
サンプリング | データの一部をランダム抽出 | 統計分析・品質検査 |
並び替え試験 | 問題順・参加順をシャッフル | 公平性・自動出題に |
シミュレーション | 異なる条件で乱数テスト | テストデータ生成 |
Excelの「重複なし乱数」は、
業務・教育・データ分析など幅広い分野で使える強力なテクニックです。
✅ RPA・Power Automateと組み合わせて完全自動化も可能
Excelの乱数生成は、RPAツールと組み合わせることで自動化も可能です。
たとえば:
- Power Automateで毎朝乱数を生成して名簿を並べ替え
- UiPathでExcel乱数を作り、社員リストをランダム抽出
- Excelファイル保存後、自動で固定化(値貼り付け)
これにより、人の手を介さない完全自動抽選・データ生成が可能になります。
✅ まとめ:Excelで重複なしのランダム数字を自在に生成しよう!
- RANDBETWEEN単体では重複が発生する
- RAND関数+並べ替えで重複なしの順番を作れる
- Excel 365ならSORTBY+RANDARRAYで一発生成
- SEQUENCE関数を組み合わせれば範囲指定も自在
- COUNTIFを使えば古いExcelでも重複チェック可能
- 値貼り付けで固定して再計算を防止
- RPA連携で自動化も可能
Excelで「重複しない乱数」を自在に扱えるようになると、
データ整理・抽選・シミュレーションなど、あらゆる作業が効率化します。
関数の組み合わせをマスターして、
「正確で再現性のあるランダム処理」をExcelで実現しましょう。