Excel一覧 Excel関数 RAND・RANDBETWEEN・ランダム関数

【Excel】ランダムな数字を「重複なし」で作る方法|RAND・RANDBETWEEN

Excelで乱数を使いたい場面は意外と多くあります。
たとえば「抽選番号を作りたい」「席順をランダムに決めたい」「テストデータをランダム生成したい」などです。

しかし、単に「ランダムな数字を作る」だけなら簡単でも、
「重複しない数字」を作るとなると、少し工夫が必要になります。

この記事では、Excelの関数だけで「重複しないランダム数字」を生成する方法を、
初心者にもわかりやすく手順付きで解説します。
RAND関数・RANDBETWEEN関数・SORTBY関数などを使った最新の実務向けテクニックも紹介します。

✅ Excelでランダムな数字を作る基本関数

まずは、Excelでランダムな数値を作成するための基本的な関数を確認しましょう。


・RAND関数:0以上1未満の小数を返す

構文:
=RAND()

RAND関数は、0以上1未満のランダムな小数(例:0.12345…)を生成します。
再計算のたびに値が変わるため、動的なランダム化が可能です。
ただし、整数を作りたい場合はこのままでは使いづらいので、掛け算や四捨五入を組み合わせます。


・RANDBETWEEN関数:指定した範囲の整数を返す

構文:
=RANDBETWEEN(最小値, 最大値)

例:=RANDBETWEEN(1,100)
→ 1~100の範囲でランダムな整数を返します。

この関数を使えば、たとえば「1~50までの乱数リスト」を一瞬で作ることができます。
しかし、同じ数が重複して出る可能性があるのが欠点です。

参考:【Excel】適当な数値(乱数)をランダムに入力する方法


✅ 重複しないランダム数字を作る考え方

Excelで「重複しない乱数リスト」を作る場合、主に2つの方法があります。

  1. RAND関数を使って並べ替える方法
  2. RANDBETWEEN関数とCOUNTIF関数を組み合わせる方法

さらに、Excel 365以降では SORTBY関数やSEQUENCE関数 を活用すると、
わずか1行の関数で実現できる便利な方法もあります。

それぞれ順に見ていきましょう。


✅ 方法① RAND関数で並べ替えて重複なしのランダム順を作る

一番シンプルで確実な方法です。
まず、対象となる数字を順番に並べ、それをRAND関数でシャッフルします。


・手順

  1. A列に1~10までの数字を入力(または連番で作成)
  2. B列に次の式を入力
    =RAND()
  3. C列でRANDを基準に並べ替える
    - データタブ → 並べ替え → 「B列(RAND列)」を昇順または降順

こうすることで、「1~10」の数字が重複なしでランダムな順序に並びます。


・例:SORTBY関数を使って一瞬で実現(Excel 365以降)

新しいExcel(Microsoft 365やExcel 2021)では、さらに簡単にできます。

=SORTBY(SEQUENCE(10,1,1,1),RANDARRAY(10))

この式は、

  • SEQUENCE(10,1,1,1) → 1~10の連番を作成
  • RANDARRAY(10) → 10個のランダムな数値を生成
  • SORTBY → 乱数を基準に並び替え

結果として、重複しないランダム順リストが自動生成されます。
この方法はスピーディで、再計算すれば毎回違う並びになります。


✅ 方法② RANDBETWEEN関数+COUNTIF関数で重複チェック

RAND関数での並べ替えが使えない場合は、RANDBETWEENとCOUNTIFで「重複を除外」できます。


・手順例

  1. A2セルに次の式を入力します:
    =RANDBETWEEN(1,10)
  2. B2セルに次を入力して「重複チェック」します:
    =COUNTIF($A$2:A2, A2)
  3. B2の値が「1」ならOK、「2以上」なら重複なので再計算(F9キー)

この方法は、再計算を繰り返してすべての値がユニークになるまで調整します。
完全自動ではありませんが、Excelの古いバージョンでも使える安定した方法です。

参考:【Excel】特定の文字列を条件にするVLOOKUPの使い方とは?IFやCOUNTIFと組み合わせて柔軟なデータ取得を実現する方法


・応用:配列数式で自動生成(旧Excel向け)

次の数式を入力し、Ctrl+Shift+Enterで確定します。

=IFERROR(SMALL(IF(COUNTIF($A$1:A1,ROW($1:$10))=0,ROW($1:$10)),RANDBETWEEN(1,10-ROW(A1)+1)),"")

この数式は、1~10の中から重複しないランダム数を1つずつ生成します。
古いExcel(2016以前)で動的配列が使えない場合に有効です。


✅ 方法③ UNIQUE・SORTBY・SEQUENCE関数を組み合わせる(Excel 365)

最新のExcelでは、わずか1つの関数で「重複なしの乱数リスト」が作れます。

=SORTBY(SEQUENCE(20,1,1,1),RANDARRAY(20))

この式の動作を分解すると:

  1. SEQUENCE(20,1,1,1) → 1から20までの連番を作成
  2. RANDARRAY(20) → 20個の乱数を生成
  3. SORTBY → 乱数順に並べ替え(重複なし)

この方法は、RANDARRAYが自動で一意の値を生成しないため、
「連番+ランダム順」という仕組みで“重複なし”を保証しています。
一度入力するだけでランダムに並んだ1~20の数字が得られ、非常に便利です。

参考:【Excel】降順にできないときの原因と解決方法|数値・日付・文字列の正しい並べ替え方


✅ 方法④ VBAを使って重複しない乱数を作る(応用編)

関数だけでなく、VBA(マクロ)を使えばさらに柔軟に制御できます。
例えば「1~100の範囲から重複なしで10個の乱数を生成」するコードは以下の通りです。

Sub UniqueRandomNumbers()
    Dim i As Long, n As Long
    Dim result() As Long
    Dim temp As Long
    Dim exists As Boolean

    n = 10 '生成する乱数の個数
    ReDim result(1 To n)

    For i = 1 To n
        Do
            temp = Int((100 - 1 + 1) * Rnd + 1)
            exists = False
            For j = 1 To i - 1
                If result(j) = temp Then
                    exists = True
                    Exit For
                End If
            Next j
        Loop While exists
        result(i) = temp
    Next i

    For i = 1 To n
        Cells(i, 1).Value = result(i)
    Next i
End Sub

このVBAを実行すると、A列に「重複しない乱数」が10個生成されます。
RANDやRANDBETWEEN関数より高速で、範囲や件数の制御も簡単です。

参考:【VBA】特定の文字を含む列の処理:検索・削除・別シートにコピー


✅ 実務での活用例

重複しないランダム数字は、業務や学習のさまざまな場面で活用できます。

・抽選・くじ引き

「社員番号の中から当選者をランダムに選ぶ」ときに使えます。
RAND関数やSORTBYで並べ替えれば、ランダム順に抽出が可能です。

・席順やグループ分け

生徒・社員を公平に並べ替える際、重複なし乱数を使って簡単に並び替えできます。

・テストデータの生成

商品コードやIDをテスト用にランダム生成し、重複を防ぎたいときに便利です。


✅ 注意点とコツ

・再計算で値が変わる

RAND関数・RANDBETWEEN関数は再計算のたびに値が変わります
結果を固定したい場合は、値をコピーして「値貼り付け」で固定しましょう。

  1. 範囲を選択 → Ctrl+C
  2. 右クリック → 「値のみ貼り付け」

・RANDARRAYはExcel 365以降のみ

RANDARRAYSORTBY 関数はExcel 2019以前では使用できません。
古いバージョンではRAND+並べ替えの方法を使うのが確実です。


・大量データでは計算負荷に注意

RAND関数は揮発性関数のため、Excelの再計算が重くなる場合があります。
数千件以上の乱数を作る場合は、VBAでの生成がおすすめです。


 

✅ まとめ:Excelで重複しないランダム数字を自在に作ろう

  • RAND関数やRANDBETWEEN関数でランダムな数値を生成できる
  • RAND+並べ替えで「重複なしランダム順」が簡単に作れる
  • Excel 365では SORTBY(SEQUENCE(),RANDARRAY()) が最も効率的
  • COUNTIFやVBAを使えば、古いバージョンでも対応可能
  • 再計算で変わる点に注意し、固定したいときは「値貼り付け」を活用

Excelでは関数を少し組み合わせるだけで、ユニークな乱数リストを完全自動で生成できます。
抽選・順番決め・データサンプル作成など、さまざまな場面でこのテクニックを活用してみてください。

    -Excel一覧, Excel関数, RAND・RANDBETWEEN・ランダム関数