「テストデータを大量に作りたいけど、1セルずつ入力するのは面倒…」と感じたことはありませんか。手作業で乱数を並べていくと、時間がかかるうえにミスも起きやすいですよね。そんなときは、RANDARRAY関数を使えば一発で解決します。この記事では、RANDARRAY関数の基本から実践的な活用パターンまでまとめて解説します。
RANDARRAY関数とは?スプレッドシートで乱数の配列を生成する関数
RANDARRAY関数は「ランドアレイ関数」と読みます。Random Array(ランダムな配列)が語源です。
指定した行数・列数の乱数配列を一括で生成できます。1つのセルに数式を入れるだけで、周囲のセルに自動展開(スピル)されるのが特徴です。
基本構文
=RANDARRAY(行数, 列数)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 行数 | 省略可 | 生成する配列の行数(省略時は1) |
| 列数 | 省略可 | 生成する配列の列数(省略時は1) |
戻り値
0以上1未満の小数(例: 0.384729…)の配列を返します。
対応環境
| 環境 | 対応状況 |
|---|---|
| Googleスプレッドシート | 対応 |
| Excel(Microsoft 365) | 対応(ただし引数が異なる) |
| Excel 2021以前 | 非対応 |
ExcelのRANDARRAYとの違い
GoogleスプレッドシートとExcelでは、同じ関数名でも仕様が大きく異なります。
| 項目 | Googleスプレッドシート | Excel(Microsoft 365) |
|---|---|---|
| 引数の数 | 2つ(行数, 列数) | 5つ(行数, 列数, 最小値, 最大値, 整数フラグ) |
| 戻り値の範囲 | 0以上1未満(固定) | 最小値〜最大値を指定可能 |
| 整数の生成 | INT関数と組み合わせが必要 | 第5引数でTRUEを指定すればOK |
NOTE
ExcelのRANDARRAYには最小値・最大値・整数フラグの引数がありますが、Googleスプレッドシート版にはありません。Excelの解説記事を参考にすると混乱しやすいので注意してください。
RANDARRAY関数の基本的な使い方
5行3列の乱数配列を生成する
もっとも基本的な使い方です。セルに次の数式を入力します。
=RANDARRAY(5,3)
入力したセルを起点に、5行×3列の範囲に乱数が自動展開されます。すべて0以上1未満の小数です。
展開先のセルにデータが入っていると、#REF!エラーになります。あらかじめ空欄にしておきましょう。
引数を省略したパターン
引数はどちらも省略できます。
=RANDARRAY()
引数をすべて省略すると、1行×1列(1つだけ)の乱数を返します。この場合はRAND関数と同じ動きです。
=RANDARRAY(5)
行数だけ指定すると、列数は1として扱われます。5行×1列の乱数が縦に並びます。
計算のたびに値が変わる(揮発性関数)
RANDARRAYは揮発性関数です。スプレッドシートが再計算されるたびに値が変わります。
具体的には、次のタイミングで値が更新されます。
- どこかのセルを編集したとき
- シートを開き直したとき
- 他の数式が再計算されたとき
「せっかく生成した乱数が消えてしまった」というトラブルは、この性質が原因です。値を固定する方法はこの記事の後半で解説します。
RANDARRAY関数の実践的な使い方・応用例
パターン1: テストデータを一括生成する
0〜1の小数では使いにくい場面も多いですよね。四則演算を組み合わせれば、好きな範囲のデータを作れます。
たとえば、0〜100の小数を5行3列で生成するにはこうします。
=RANDARRAY(5,3)*100
1000〜5000の範囲にしたいなら、次のように書きます。
=RANDARRAY(5,3)*4000+1000
*4000で範囲の幅を、+1000で下限を調整しています。
パターン2: 整数の乱数配列を作る
テストデータでは整数がほしい場面が多いです。INT関数を組み合わせて小数点以下を切り捨てます。
1〜100の整数を10行3列で生成する数式です。
=INT(RANDARRAY(10,3)*100)+1
任意の範囲の整数を作りたいときは、次の公式を使ってください。
=INT(RANDARRAY(行数,列数)*(上限-下限+1))+下限
たとえば、50〜200の整数なら次のようになります。
=INT(RANDARRAY(10,3)*(200-50+1))+50
*(上限-下限+1)で範囲を決めて、+下限でスタート地点をずらす仕組みです。
パターン3: リストをランダムにシャッフルする
A2:A11に名前リストがあるとします。これをランダムな順番に並べ替えるには、SORT関数と組み合わせます。
=SORT(A2:A11, RANDARRAY(ROWS(A2:A11)), TRUE)
ROWS関数でリストの行数を取得し、同じ行数の乱数を生成しています。SORT関数がその乱数を基準に並べ替えるので、結果としてランダムな順番になります。
再計算のたびに順番が変わるため、確定したいときは値貼り付けで固定しましょう。
パターン4: リストからN件をランダム抽出する
シャッフルの応用で、リストから指定件数だけランダムに取り出せます。SORTN関数を使う方法が簡単です。
A2:A11の10件から3件をランダム抽出する数式です。
=SORTN(SORT(A2:A11, RANDARRAY(ROWS(A2:A11)), TRUE), 3)
まずSORT+RANDARRAYでリストをシャッフルし、SORTN関数で上から3件だけ取り出しています。
INDEX関数を使う方法もあります。
=INDEX(A2:A11, INT(RANDARRAY(3,1)*ROWS(A2:A11))+1)
こちらはランダムな行番号を生成してINDEXで取り出す方式です。ただし重複が発生する可能性があります。重複NGならSORTN方式がおすすめです。
揮発性関数の注意点と乱数の固定方法
RANDARRAY関数は再計算のたびに値が変わります。生成した乱数を保持したい場合は、値として貼り付けましょう。
手順は次のとおりです。
- RANDARRAY関数で生成された範囲を選択してコピーする
- 同じ範囲を選択した状態で、Ctrl+Shift+V(Macの場合はCmd+Shift+V)で値のみ貼り付ける
これで数式が消え、値だけが残ります。
乱数の固定方法についてはRAND関数の記事で詳しく解説しています。仕組みは同じなので、あわせて確認してみてください。
RAND・RANDBETWEEN・RANDARRAYの使い分け
スプレッドシートには乱数を生成する関数が3つあります。目的に応じて使い分けましょう。
| 項目 | RAND | RANDBETWEEN | RANDARRAY |
|---|---|---|---|
| 生成数 | 1つ | 1つ | 複数(配列) |
| 戻り値 | 0以上1未満の小数 | 指定範囲の整数 | 0以上1未満の小数の配列 |
| 引数 | なし | 下限, 上限 | 行数, 列数 |
| 主な用途 | 単一の乱数がほしいとき | 整数の乱数が1つほしいとき | 大量の乱数を一括生成したいとき |
判断の基準はシンプルです。
- 乱数が1つだけほしい → RAND関数(小数)またはRANDBETWEEN関数(整数)
- 乱数を大量に一括生成したい → RANDARRAY関数
- 整数の乱数を大量に生成したい → RANDARRAY関数+INT関数の組み合わせ
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| #REF! | 配列の展開先にデータが入っている | 展開先のセルを空欄にする |
| #VALUE! | 引数に数値以外(文字列など)を指定した | 行数・列数には正の整数を指定する |
| #NUM! | 引数に0以下の数値を指定した | 1以上の正の整数を指定する |
| 値が勝手に変わる | 揮発性関数の仕様 | 値貼り付け(Ctrl+Shift+V)で固定する |
まとめ
RANDARRAY関数のポイントをおさらいします。
- RANDARRAY関数は、指定した行数×列数の乱数配列を一括生成する関数
- Googleスプレッドシート版の引数は「行数」と「列数」の2つだけ
- 戻り値は0以上1未満の小数で、整数にしたいときはINT関数と組み合わせる
- 四則演算で任意の範囲のデータを生成できる
- SORT関数やSORTN関数と組み合わせれば、シャッフルやランダム抽出も可能
- 揮発性関数なので、値を保持したいときは値貼り付けで固定する
テストデータの作成やランダム抽出など、使いこなせると作業効率がぐっと上がります。ぜひ実際のシートで試してみてください。
