スプレッドシートのRANDARRAY関数の使い方|複数の乱数を一括生成

スポンサーリンク

「テストデータを大量に作りたいけど、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関数は再計算のたびに値が変わります。生成した乱数を保持したい場合は、値として貼り付けましょう。

手順は次のとおりです。

  1. RANDARRAY関数で生成された範囲を選択してコピーする
  2. 同じ範囲を選択した状態で、Ctrl+Shift+V(Macの場合はCmd+Shift+V)で値のみ貼り付ける

これで数式が消え、値だけが残ります。

乱数の固定方法についてはRAND関数の記事で詳しく解説しています。仕組みは同じなので、あわせて確認してみてください。

RAND・RANDBETWEEN・RANDARRAYの使い分け

スプレッドシートには乱数を生成する関数が3つあります。目的に応じて使い分けましょう。

項目RANDRANDBETWEENRANDARRAY
生成数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関数と組み合わせれば、シャッフルやランダム抽出も可能
  • 揮発性関数なので、値を保持したいときは値貼り付けで固定する

テストデータの作成やランダム抽出など、使いこなせると作業効率がぐっと上がります。ぜひ実際のシートで試してみてください。

関連記事

タイトルとURLをコピーしました