「テスト用にランダムなデータが大量にほしい」「シミュレーション用の乱数を手入力するのは面倒すぎる」と感じたことはありませんか? セル1つずつに乱数を入力していたら、あっという間に日が暮れてしまいますよね。
ExcelのRANDARRAY関数を使えば、指定した行数・列数のランダムな数値を一括で生成できます。 数式は1つだけでよく、後から行数を変えるのも引数を書き換えるだけ。 この記事では、RANDARRAY関数の基本構文から整数・小数の切り替え、テストデータ作成・ランダムサンプリング・モンテカルロシミュレーションといった実務での活用例、よくあるエラーの対処法まで、初心者の方でも迷わないようにわかりやすく解説します。
ExcelのRANDARRAY関数とは?
RANDARRAY関数は「ランダムアレイ」と読みます。 「Random(ランダム)」と「Array(配列)」を組み合わせた名前です。
この関数は、指定したサイズのランダムな数値の配列を返します。 たとえば「5行3列の乱数テーブルがほしい」といった場面で、たった1つの数式で15個分の乱数を一括生成できますよ。
RANDARRAY関数はMicrosoft 365またはExcel 2021以降で利用できます。 Excel 2019以前の環境では使えないので、ご注意くださいね。
動的配列関数(スピル機能)の代表格
RANDARRAY関数は「動的配列関数」の1つで、結果が自動的に隣接セルへ展開(スピル)するのが特徴です。 スピルとは、1つのセルに入力した数式の結果が、必要な範囲のセルに自動的にあふれ出して表示される仕組みのこと。
たとえば A1セルに =RANDARRAY(5, 3) と入力すると、A1からC5までの15セルに自動的に乱数が広がります。 数式が入っているのはA1だけなので、修正したいときも1か所を直すだけで全体が更新されますよ。
スピル範囲全体を一度に参照したいときは、先頭セルのアドレスに # を付けて A1# のように書きます。 「合計や平均を計算したい」といった場面でも便利な書き方です。
RANDARRAY関数の書き方(構文と引数)
基本構文
=RANDARRAY([行], [列], [最小値], [最大値], [整数])
引数は5つありますが、すべて省略できます。 省略した場合は、0以上1未満の小数が1つだけ返されます(つまりRAND関数と同じ動きですね)。
引数の一覧
| 引数 | 必須/省略可 | 説明 | 省略時の初期値 |
|---|---|---|---|
| 行 | 省略可 | 配列の行数(1以上の整数) | 1 |
| 列 | 省略可 | 配列の列数(1以上の整数) | 1 |
| 最小値 | 省略可 | 生成する数値の下限 | 0 |
| 最大値 | 省略可 | 生成する数値の上限 | 1 |
| 整数 | 省略可 | TRUE=整数 / FALSE=小数 | FALSE(小数) |
「整数」引数のポイント: TRUEまたは1を指定すると整数だけが生成されます。 FALSEまたは0(省略時も同じ)だと小数値になります。 TRUEを指定したときは、最小値と最大値も整数で指定するのが安全ですよ。
引数を指定する順番に注意
RANDARRAY関数の引数は「行→列→最小値→最大値→整数」の順番です。 RANDBETWEEN関数の引数の順番(下限→上限)に慣れていると、つい =RANDARRAY(1, 100) のように書いてしまいがちですが、これは「1行100列の0〜1の小数」を作る式になってしまいます。
「1〜100の整数を1つだけほしい」場合は =RANDARRAY(1, 1, 1, 100, TRUE) と書く必要があります。 引数の順番は意識しておきたいポイントですね。
RANDARRAY関数の基本的な使い方
例1: 5行3列のランダムな整数を生成する
1から100までの整数をランダムに生成してみましょう。
=RANDARRAY(5, 3, 1, 100, TRUE)
この数式を1つのセルに入力するだけで、5行3列の15個の整数が自動的に展開されます。 入力したセルから右と下に結果がスピルされるので、展開先のセルは空けておいてくださいね。
例2: 引数をすべて省略した場合
=RANDARRAY()
引数をすべて省略すると、0以上1未満の小数が1つ返されます。 この動きはRAND関数と同じです。 「とにかく乱数が1個ほしい」だけなら、RAND関数のほうが短くて済みますね。
例3: 行・列だけを指定する
=RANDARRAY(3, 4)
行と列だけを指定すると、3行4列の配列で0以上1未満の小数が返されます。 最小値・最大値・整数は省略時の初期値(0, 1, FALSE)が使われますよ。
例4: 小数の範囲を指定する
「0〜100の小数(小数点以下も含む)」を作りたいときは、整数引数をFALSEまたは省略にします。
=RANDARRAY(5, 3, 0, 100, FALSE)
これで0以上100未満の小数が15個生成されます。 売上の重み付けや確率シミュレーションなど、連続値が必要な場面で使えますよ。
例5: マイナスを含む乱数を作る
最小値にマイナス値を指定すれば、負の数を含む乱数も生成できます。
=RANDARRAY(5, 3, -50, 50, TRUE)
-50から50までの整数がランダムに生成されます。 偏差値の模擬データや、増減の幅を試したいシミュレーションで活躍する書き方です。
RANDARRAY関数の実践的な活用例
活用例1: テストデータの一括生成
ダミーの売上データなどを作りたいときに便利です。 たとえば、100人分の売上金額(1,000円〜50,000円)を一括で作るなら次のように書きます。
=RANDARRAY(100, 1, 1000, 50000, TRUE)
100行1列の配列で、1,000から50,000の間の整数がランダムに生成されます。 ピボットテーブルやグラフの動作確認、研修用の練習データなど「中身は適当でいいから、それっぽい数字が大量にほしい」場面で重宝しますよ。
複数列のテストデータがほしいときは、列ごとに別の引数で組み合わせます。 たとえば「売上(1,000〜50,000)」と「数量(1〜10)」の2列を作るなら、隣り合わせのセルに別々のRANDARRAY式を入れる形ですね。
活用例2: SORT関数と組み合わせてソート済みの乱数を作る
ランダムに生成した数値を昇順で並べたいときは、SORT関数で囲みます。
=SORT(RANDARRAY(10, 1, 1, 100, TRUE))
これで1から100の整数が10個、小さい順に並んだ状態で表示されます。 降順にしたいときは =SORT(RANDARRAY(10, 1, 1, 100, TRUE), 1, -1) のように、SORT関数の第3引数に-1を指定してください。
テスト用のソート済みデータがほしいときや、検索関数(VLOOKUP・XLOOKUPなど)の動作確認をしたいときに重宝しますよ。
活用例3: ランダムサンプリング(無作為抽出)
「100人のリストから10人をランダムに選びたい」といった抽選・サンプリングの場面でもRANDARRAY関数が活躍します。 INDEX関数とSORTBY関数と組み合わせるのが定番ですね。
たとえばA2:A101に100人分の名前があるとして、SORTBY関数を使えば次のように書けます。
=INDEX(SORTBY(A2:A101, RANDARRAY(100)), SEQUENCE(10))
RANDARRAY(100)で100個の乱数を作り、それをキーにA2:A101を並べ替えています。 結果のうち先頭10件をINDEX関数とSEQUENCE関数で取り出す形ですね。 「重複なし・等確率」で10人を抽出できます。
シンプルに「ランダムな順番に並べ替える」だけでよければ、次の式でもOKです。
=SORTBY(A2:A101, RANDARRAY(100))
社内の班分けや当番決め、AB両グループへのランダム割り当てなど、抽選が絡む業務はこれで一発ですよ。
活用例4: モンテカルロ法のシミュレーション
「サイコロを1,000回振ったら、6が出る回数の期待値はいくつか?」といった確率シミュレーションでも、RANDARRAY関数が便利です。 1,000個の乱数を一発で作って、条件に合う数を数えるだけで済みます。
=COUNTIF(RANDARRAY(1000, 1, 1, 6, TRUE), 6)
1,000個の1〜6の整数の中から、6が出た回数をCOUNTIF関数で数える式です。 理論上は約167回(1,000 ÷ 6)に近い値が出るはずですよ。
売上予測や在庫シミュレーションなど、不確実性を含む試算ではモンテカルロ法が有効です。 RANDARRAY関数なら1つの数式で大量の試行ができるので、本格的なシミュレーションも手軽に組めますね。
活用例5: INT関数と組み合わせて整数に変換する
「整数」引数をTRUEにする代わりに、INT関数で小数点以下を切り捨てる方法もあります。
=INT(RANDARRAY(5, 3, 1, 100))
この書き方でも整数が得られます。 ただし、RANDARRAY関数の「整数」引数をTRUEにするほうがシンプルなので、通常はそちらがおすすめです。 INT関数を使うのは、小数で生成した結果を別の計算に流用したい場合に限られますね。
INT関数の使い方はこちらの記事で詳しく解説しています。
活用例6: 値を固定する方法(再計算で変わらないようにする)
RANDARRAY関数は「揮発性関数」です。 シートを再計算するたびに、値が新しい乱数に変わります。 セルを編集したり、別シートで関数を編集したりするだけでも値が変わってしまうので、「さっきの乱数のまま固定したい」場面では困りますよね。
生成した値を固定したいときは、次の手順で対応しましょう。
- RANDARRAY関数で生成されたセル範囲を選択する
- Ctrl + C でコピーする
- 同じ範囲を選択した状態で「貼り付け」→「値」を選ぶ(ショートカット: Ctrl + Alt + V → V → Enter)
これで数式が値に置き換わり、再計算しても変わらなくなりますよ。 テストデータを納品したり、シミュレーション結果のスクリーンショットを撮ったりするときは、値貼り付けでの固定が必須です。
なお、計算方法を「手動」に切り替える方法(数式タブ → 計算方法の設定 → 手動)もありますが、シート全体の挙動が変わってしまうのでおすすめしません。
RANDARRAY関数でよくあるエラーと対処法
#VALUE! エラー
行数や列数に0以下の数値、または小数を指定すると発生します。 行と列には1以上の整数を指定してください。
=RANDARRAY(0, 3) → #VALUE! エラー(行が0)
=RANDARRAY(2.5, 3) → #VALUE! エラーになる場合あり(環境による)
=RANDARRAY(5, 3) → 正常に動作
また、最小値が最大値より大きい場合も#VALUE!エラーになります。
=RANDARRAY(5, 3, 100, 1) → #VALUE! エラー(最小値>最大値)
=RANDARRAY(5, 3, 1, 100) → 正常に動作
引数を変数(別セル参照)で渡している場合は、その参照先の値もチェックしておきましょう。
#CALC! エラー
生成する配列が大きすぎてシートに収まらない場合に発生します。 たとえば、A1セルに =RANDARRAY(1048577, 1) と入力すると、Excelの最大行数(1,048,576行)を超えるためエラーになります。
行数・列数を見直して配列のサイズを小さくするか、入力セルの位置を表の左上付近に変更してみてください。 「100万行 × 100列」のような大きすぎる配列は、計算負荷も高いのでおすすめしません。
#NAME? エラー
RANDARRAY関数に対応していないバージョンのExcelで使おうとすると、#NAME?エラーが表示されます。 この関数はMicrosoft 365またはExcel 2021以降が必要です。 Excel 2019以前の環境では代わりに、RAND関数やRANDBETWEEN関数をセル単位でコピーして対応しましょう。
お使いのバージョンが対応しているかは、「ファイル」→「アカウント」から確認できますよ。
#SPILL! エラー
スピル先(配列が展開される先)のセルにデータが入っていると、#SPILL!エラーになります。 たとえばA1に =RANDARRAY(5, 3) と入力したのに、B3セルにすでに値が入っていると、配列を展開できないためエラーになる仕組みです。
展開先のセルを空にすれば解消しますよ。 エラーが出ているセルをクリックすると、Excelが「スピルできない範囲」を青枠で表示してくれます。 その範囲のデータを削除するか、別の場所に移動してから数式を入れ直してみてください。
結合セルがスピル先にある場合も#SPILL!の原因になります。 結合を解除してから数式を入力し直すと解決しますよ。
RAND・RANDBETWEEN関数との違い・使い分け
Excelには乱数を生成する関数が3つあります。 目的に応じて使い分けましょう。
| 関数 | 返す値 | 個数 | 引数 |
|---|---|---|---|
| RAND() | 0以上1未満の小数 | 1つ | なし |
| RANDBETWEEN(下限, 上限) | 指定範囲の整数 | 1つ | 2つ |
| RANDARRAY(行, 列, 最小, 最大, 整数) | 指定範囲の整数または小数 | 配列(複数) | 5つ(すべて省略可) |
使い分けの目安
- 乱数(小数)が1つだけほしい → RAND関数が一番シンプル
- 整数の乱数が1つほしい → RANDBETWEEN関数が手軽
- 複数の乱数を一括で生成したい → RANDARRAY関数
- 小数の範囲を指定して乱数を作りたい → RANDARRAY関数のみ可能
RANDARRAY関数は配列で返せるのが最大の強みです。 RAND関数やRANDBETWEEN関数だと、必要なセルの数だけ数式をコピーする必要がありますが、RANDARRAY関数なら1つの数式で完結します。 行数を変えたいときも引数を書き換えるだけなので、管理もラクですよ。
また、RANDBETWEEN関数では指定できない「小数の範囲」も指定できるのがRANDARRAY関数の強みです。 「0.0〜1.0の連続値が10個ほしい」といった場面では、RANDARRAY関数一択になります。
互換性の観点
Excel 2019以前で動作させる必要があるブックでは、RAND関数・RANDBETWEEN関数を使ってください。 RANDARRAY関数を含むブックを古いExcelで開くと#NAME?エラーになり、その場で値が壊れてしまいます。 取引先や社内で旧バージョンのExcelが残っているなら、互換性を考えてRAND/RANDBETWEEN関数を選ぶのが安全ですね。
まとめ
この記事では、ExcelのRANDARRAY関数の使い方を解説しました。 ポイントをおさらいしましょう。
- RANDARRAY関数は、指定した行数・列数のランダムな数値の配列を一括生成できる動的配列関数
- 引数は5つ(行・列・最小値・最大値・整数)で、すべて省略可能
- 「整数」引数をTRUEにすると整数、FALSEまたは省略で小数が返される
- 結果は隣接セルへ自動展開(スピル)される。スピル範囲は
A1#のように#付きで参照可能 - 揮発性関数なので再計算のたびに値が変わる。固定するにはコピー → 値貼り付け
- SORT関数と組み合わせるとソート済み乱数、SORTBY関数と組み合わせるとランダムサンプリングが作れる
- モンテカルロシミュレーションのように大量の乱数を扱う処理にも便利
- RAND関数・RANDBETWEEN関数との違いは「配列で一括生成できるか」「小数の範囲を指定できるか」
- Microsoft 365またはExcel 2021以降が必要。古い環境ではRAND/RANDBETWEEN関数で代用
テストデータの作成、ランダム抽選、シミュレーションなど、ランダムなデータが必要な場面でぜひ活用してみてください。 1つの数式で完結するシンプルさは、一度使うと手放せなくなりますよ。
