残業を減らす!Officeテクニック

ダミーデータ生成が捗る! Excelの新関数「RANDARRAY」で簡単に乱数を生成

スピルに対応し、従来の関数「RAND」や「RANDBETWEEN」を代替する便利な関数

「RANDARRAY」で5×7の範囲で乱数を生成

 今回は、Office 2021、Microsoft 365で利用可能な新関数「RANDARRAY」を紹介します。乱数を生成できる関数ですが、スピルに対応しており、従来の関数よりも操作を省略可能。サンプルデータを作成する際などに重宝します。ひたすらデータをコピー&ペーストしていると感じた時などに思い出してください。基本の動作は単純です。さっそく使ってみましょう。


※本稿の内容は「Office Professional Plus 2021」で動作確認しています。

乱数を発生する「RANDARRAY」

 「乱数」とは規則性のないランダムな数値のことです。くじ引きや単純なシミュレーションなどを再現する際に利用します。従来の関数「RAND」や「RANDBETWEEN」に代わるのが「RANDARRAY」(ランダム・アレイ)です。構文は以下の通り。5つの引数は、名称そのままの役割なので理解しやすいと思います。

RANDARRAY関数の引数は[行数][列数][最小値][最大値][乱数の種類]の5つ。[行数]と[列数]は発生させる乱数の配列。[最小値]を省略すると「0」、[最大値]を省略すると「1」を指定したとみなされる。[乱数の種類]は「TRUE」で整数、「FALSE」もしくは省略で実数(小数)の乱数を発生させる

 引数[行数]と[列数]により、「○行○列」の乱数を発生させるかを指定可能。[最小値][最大値][乱数の種類]を省略すると、「0」~「1」の範囲で実数(小数)の乱数が発生します。例えば「=RANDARRAY(10,5)」と入力してみます。スピルに対応しているので、セルA1に数式を入力するだけで、10行5列の乱数が発生します。

セルA1に「=RANDARRAY(10,5)」と入力する
10行5列の乱数が発生した

 なお、[行数]と[列数]も省略すると、従来のRAND関数と同じく1行1列の1つのセルに乱数が発生しますが、これではRANDARAAYを使う意味はありません。

 だから何? と思われるでしょうが、これがRANDARAAY関数の最も単純な形です。今度は、10~90の整数値で乱数を発生させ、そのデータを元にグラフを作成してみます。入力する数式は「=RANDARRAY(8,5,10,90,TRUE)」です。

セルB2に「=RANDARRAY(8,5,10,90,TRUE)」と入力する
8行5列で、10~90の整数値の乱数が発生し、連動するグラフが作成された

 上の例ではグラフを作成済みなので、乱数の発生と同時にグラフが作成されました。RANDARAAY関数はスピル対応なので、100行100列などの乱数も1つの数式を入力するだけで発生させることができます。ヒストグラムや分布図などのサンプルデータにも応用可能ですよね。

「RANDARRAY」と「SORTBY」を組み合わせてデータをシャッフルする

 既存のデータの順番をシャッフルしてランダムに入れ替えたい! といった場合にもRANDARRAY関数が使えます。以前に紹介した新関数「SORTBY」と組み合わせます。

 B列に入力された氏名をランダムに入れ替えます。入力する数式は「=SORTBY(B1:B20,RANDARRAY(20,1))」です。並べ替えの基準値をRANDARRAY関数で指定することでシャッフルできる仕掛けです。20行1列(20,1)の指定がポイントです。[列数]の「1」を省略して「RANDARRAY(20)」としても構いません。

セルC1に「=SORTBY(B1:B20,RANDARRAY(20,1))」と入力する。「RANDARRAY(20)」としても構わない
B列の氏名がシャッフルされた

 「RANDARRAY」などのスピルに対応する関数の結果は動的配列になります。特に「RANDARRAY」の結果は都度書き換わります。「値」として固定したい場合は、コピー→[値]として貼り付け、の処理を忘れないようにしましょう。