エクセルで抽選や順番決めをするとき、「ランダムな数字を生成したいけれど、同じ数字が重複してしまう」と困った経験はありませんか。
この記事では【Excel】エクセルでランダムな数字を重複しないで生成する方法(RAND・RANK関数)について解説していきます。
ポイントは
・RANDARRAY+RANK組み合わせで一括生成する
・再計算を防いで数値を固定する方法
それでは詳しく見ていきましょう。
エクセルでランダムな数字を重複しないで生成する方法1【RAND関数とRANK関数の組み合わせ】
まず、最も基本的な方法としてRAND関数とRANK関数を組み合わせて重複しない連番をランダムに生成する方法を紹介します。
この方法はExcelのすべてのバージョンで使用できるため、汎用性が高いのが特徴です。
以下のようなサンプルデータを使って解説します。
| A列(名前) | B列(RANDの値) | C列(順位) |
|---|---|---|
| マグロ | (数式入力) | (数式入力) |
| カツオ | (数式入力) | (数式入力) |
| ハラス | (数式入力) | (数式入力) |
| アボカド | (数式入力) | (数式入力) |
| カボチャ | (数式入力) | (数式入力) |
RAND関数でランダムな小数を生成する
まずB2セルに以下の数式を入力します。
=RAND()
RAND関数は0以上1未満のランダムな小数を返す関数です。
引数は不要で、括弧の中には何も入力しません。
B2からB6まで同じ数式をコピーすると、それぞれ異なるランダムな小数が生成されます。
この時点では小数の値そのものに意味はなく、次のステップで順位付けに使用するための「くじ引きの番号札」のようなものとして機能します。
RANK関数で順位に変換して重複なし連番を作る
次にC2セルに以下の数式を入力します。
=RANK(B2,$B$2:$B$6,1)
RANK関数の構文は RANK(数値, 参照, 順序) です。
第1引数の「数値」にはB2(RAND関数の結果)を指定します。
第2引数の「参照」には$B$2:$B$6と絶対参照で指定します。
これにより数式をコピーしてもRAND値の範囲がずれません。
第3引数の「順序」に1を指定すると昇順(小さい値が1位)になり、0または省略すると降順(大きい値が1位)になります。
RAND関数が生成する値は0以上1未満の小数であり、まったく同じ値が生成される確率は極めて低いため、RANK関数で変換した結果も重複なしの連番になります。
C2からC6まで数式をコピーすれば、1から5のランダムな順位が重複なしで表示されます。

エクセルでランダムな数字を重複しないで生成する方法2【RANDARRAY関数を使う方法(Excel 365・2019以降)】
Excel 365やExcel 2019以降では、RANDARRAY関数を使うことでより簡潔にランダム値を生成できます。
RANDARRAY関数は指定した行数・列数分のランダムな値を一括で配列として返す関数です。
RANDARRAY関数の基本的な使い方
RANDARRAY関数の構文は以下のとおりです。
第1引数「行数」は生成する値の行数を指定します。
第2引数「列数」は生成する値の列数を指定します。省略すると1列になります。
第3引数「最小値」と第4引数「最大値」は生成する数値の範囲を指定します。省略すると0以上1未満の小数になります。
第5引数「整数」にTRUEを指定すると整数のみが生成され、FALSEまたは省略すると小数が生成されます。
例えば5行分のランダムな小数を生成するには、B2セルに以下を入力します。
=RANDARRAY(5)
これでB2からB6に自動的にランダムな小数が表示されます。
RANDARRAYとRANKを組み合わせて重複なし順位を作る
RANDARRAY関数で生成した値に対してもRANK関数を組み合わせて使用できます。
B2セルに以下の数式を入力します。
=RANDARRAY(5)
続いてC2セルに以下の数式を入力し、C6までコピーします。
=RANK(B2,$B$2:$B$6,1)
この方法でも、重複しない1から5のランダムな順位が生成されます。
RANDARRAY関数はスピル機能(1つのセルに数式を入力するだけで隣接するセルに値が自動展開される機能)を活用しているため、B2だけに数式を入力すればB3以下には自動で値が入ります。

エクセルでランダムな数字を重複しないで生成する方法3【生成した乱数を固定する方法】
RAND関数やRANDARRAY関数の値は、セルを編集したりシートを再計算するたびに自動的に更新されます。
抽選結果や順番を確定させたい場合には、値を固定して再計算されないようにする操作が必要です。
コピー&値貼り付けで数値を固定する
最も簡単な固定方法はコピーして「値として貼り付け」する方法です。
固定したいセル範囲(例:C2:C6)を選択してコピーします。
次に同じ範囲を右クリックして「形式を選択して貼り付け」を開き、「値」を選択してOKをクリックします。
これにより数式が削除されて数値のみが残り、再計算されても値が変わらなくなります。
ショートカットキーを使う場合はコピー後にCtrl+Alt+Vで「形式を選択して貼り付け」ダイアログを開き、Vキーで「値」を選択してEnterを押す方法も便利です。

自動計算をオフにして値を保持する方法
シート全体の再計算を止めたい場合は、「数式」タブの「計算方法の設定」から「手動」を選択する方法もあります。
手動計算モードにすると、F9キーを押したときだけ再計算が実行されるようになります。
ただし手動計算は他の数式にも影響するため、作業が終わったら「自動」に戻すことをおすすめします。
通常の業務ファイルで手動計算のまま放置してしまうと、他のセルの計算結果が更新されずに古い値が表示され続ける原因になるため注意が必要です。
エクセルでランダムな数字を重複しないで生成する方法4【SORTBY+SEQUENCE関数で一発生成する方法(Excel 365)】
Excel 365を使用している場合は、SORTBYとSEQUENCEとRANDARRAYを組み合わせることで、補助列なしに重複なしのランダム連番を1つの数式で生成することができます。
SORTBY+SEQUENCE+RANDARRAYの数式
E2セルに以下の数式を入力します。
=SORTBY(SEQUENCE(5),RANDARRAY(5))
この数式の仕組みを解説します。
まずSEQUENCE(5)は1・2・3・4・5という連番の配列を生成します。
次にRANDARRAY(5)は5つのランダムな小数の配列を生成します。
そしてSORTBY関数がSEQUENCEで生成した連番を、RANDARRAYのランダム値の順に並べ替えます。
結果として1から5の連番がランダムな順序でE2からE6に表示され、重複なしのランダム数列が完成します。
補助列が不要なため、シートをすっきりさせたい場合に非常に便利な方法です。

生成件数を変更する方法
5件ではなく10件のランダム連番を生成したい場合は、数式の数値を変更するだけです。
=SORTBY(SEQUENCE(10),RANDARRAY(10))
このようにSEQUENCEとRANDARRAYの引数を揃えて変更するだけで、任意の件数に対応できます。
スピル機能により入力したセルから下方向に自動的に展開されるため、数式を1か所入力するだけで完結するのが大きなメリットです。

まとめ エクセルでランダムな数字を生成(重複しない:範囲:RAND・RANK関数)
エクセルで重複しないランダムな数字を生成する方法をまとめます。
・基本の方法:B列にRAND関数、C列にRANK関数を組み合わせてすべてのバージョンで使用可能
・Excel 365・2019以降:RANDARRAY関数でより簡潔にランダム値を生成できる
・値の固定:コピー後に「値として貼り付け」で再計算を防いで数値を確定させる
・Excel 365の最短方法:=SORTBY(SEQUENCE(n),RANDARRAY(n)) の1式で補助列なしに生成できる
どの方法も活用場面が異なります。
使用しているExcelのバージョンと目的に合わせて最適な方法を選んでください。
RAND関数とRANK関数の組み合わせはどのバージョンでも動作するため、迷った場合はまずこの方法から試してみましょう。
ランダム生成は抽選・席替え・順番決めなど幅広い場面で活用できますので、ぜひ業務や日常のエクセル作業に取り入れてみてください。


コメント