2024年01月22日11時00分 / 提供:マイナビニュース
Excelには、乱数(ランダムな数値データ)を作成してくれる関数も用意されている。今回は、これらの関数の使い方を紹介していこう。通常のExcel作業において「乱数」が必要になる場面は多くないが、状況によっては作業効率を大幅に改善してくれるケースもある。実験用(学習用)にダミーのデータ表を作成する場合などに活用できるだろう。
乱数を生成する関数の使い道
Excelの使い方を学習する際に「何らかのデータ表」が必要になるケースもある。たとえば、XLOOKUPやVLOOKUPの使い方を学習するには、データの取得元となる表(名簿や商品リストなど)を用意しておく必要がある。
手元に適当なデータ表があれば、それを使って関数などの使い方を学習できるが、そうでない場合は「ダミーのデータ表」を作成する作業から始めなければならない。これは意外と面倒な作業になるはずだ。
このような場合に活用できるのが、今回の連載で紹介するRAND、RANDBETWEEN、RANDARRAYといった関数だ。これらの関数を使うと「ダミーのデータ表」を短時間で作成できるようになる。
新しく覚えたExcel関数や機能の動作を確認してみたいが、「適当なデータ表が手元になく、データ表の作成から始めなければならない・・・」といった場合に活用できるテクニックとして覚えておくと重宝するだろう。
関数RANDを使ってダミーの数値データを作成
それでは、乱数を生成する関数の使い方を紹介していこう。最初に紹介するのは、0~1未満の数値データをランダムに生成してくれる「関数RAND」だ。この関数は“引数なし”で使用できる。
初めて使用する方は、試しに適当なセルに「=RAND()」と入力して「Enter」キーを押してみるとよい。0~1の数値(0以上、1未満の数値)がランダムに表示されるのを確認できるはずだ。
この関数RANDを使って0~1以外の数値を生成することも可能だ。この場合は、関数RANDの前後に適当な数式を追加してあげればよい。ここでは、ダミー名簿の「年齢」を作成する場合を例に手順を紹介していこう。
たとえば、「20~80未満」の数値をランダムに生成したい場合は、以下のように数式を入力すればよい。
関数RANDは「0~1未満」の数値を生成するので、それを60倍すると「0~60未満」の数値になる。そこに20を足すと「20~80未満」の数値になる、という考え方だ。
あとは、この数式をオートフィルでコピーするだけ。これで「20~80未満」の数値をランダムに生成することができる。
関数RANDを使用する際に注意すべきポイントは「1は含まれない」ということだ。RANDは「0~0.999・・・」の数値をランダムに生成する関数であり、どんなに試行しても「1」という数値は生成されない。
同様に、「0~0.999・・・」を60倍した数値は「0~59.999・・・」となり、決して「60」になることはない。この点に十分注意しながら作業を進めていく必要がある。
ちなみに、先ほど作成した「年齢」のダミーデータには小数点以下の数値が含まれている。これを「整数」に限定することも可能だ。続いては、「20~80の整数」をランダムに生成する方法を紹介していこう。この場合は「切り捨て」を行う関数INTを利用して、以下の図のように数式を記述すればよい。
今回の例は、関数RANDを61倍していることがポイントになる。簡単に補足しておこう。
関数RANDにより「0~0.999・・・」の数値がランダムに生成される
これを61倍すると「0~60.999・・・」という数値になる
さらに20を足すと「20~80.999・・・」という数値になる
この数値を関数INTで切り捨てると「20~80の整数」になる
以上が、上図に示した数式の考え方だ。これを間違えて60倍で処理してしまうと、
関数RANDにより「0~0.999・・・」の数値がランダムに生成される
これを60倍すると「0~59.999・・・」という数値になる
さらに20を足すと「20~79.999・・・」という数値になる
この数値を関数INTで切り捨てると「20~79の整数」になる
となり、「80」(80歳)のデータを生成できなってしまう。間違えないように注意しておこう。
あとは、この数式をオートフィルでコピーするだけ。これで「年齢」のダミーデータを20~80の間でランダムに作成できる。
生成した乱数を固定値にするには?
関数RANDを使用するときは、もうひとつ注意しておくべきポイントがある。それは「入力操作を行うたびに乱数が再生成される」ということだ。先ほどの例では、関数RANDを利用して「年齢」のダミーデータを以下の図のように作成した。
その後、
・いずれかのセルにデータ/数式/関数を入力する
・いずれかのセルに入力されているデータを削除する
などの操作を行うと、関数RANDにより乱数が再生成(再計算)され、まったく別の「20~80の整数」に置き換わってしまう。
この再生成(再計算)は「Excelファイルを開いたとき」にも行われるため、「Excelファイルを開くたびに数値(年齢)が変化する・・・」という状況になってしまう。
このような状況を回避したいときは、関数RANDを利用して作成したダミーデータを「数値データ」として記録しておく必要がある。その具体的な操作手順を紹介しておこう。
データ表の外部に、先ほど示した手順で「20~80の整数」を作成する
ダミーデータのセル範囲を選択し、「Ctrl」+「C」キーでコピーする
貼り付け先の「先頭セル」を選択する
「貼り付け」コマンドの▼をクリックし、「値」を選択する
すると、コピーしたセル範囲の結果(数値データ)だけを貼り付けることが可能となる。なお、この操作を実行した際にも「乱数の再生成」が行われるため、コピー元のデータ(H列)は新しい「20~80の整数」に置き換わる。
これで単なる「数値データ」としてダミーデータを作成できたことになる。あとは不要になったH列を削除するだけ。作成したダミーデータをそのまま固定しておきたい場合は、上記に示した手順で作業を進めていくとよいだろう。
関数RANDBETWEENを使ってダミーの数値データを作成
Excelには、RANDのほかにも「乱数を生成する関数」が用意されている。続いては、関数RANDBETWEENの使い方を紹介していこう。
◆関数RANDBETWEENの書式
=RANDBETWEEN(最小値, 最大値)
この関数は、引数に指定した「最小値」~「最大値」の範囲で整数をランダムに生成してくれる関数だ。たとえば、「20~80の整数」をランダムに生成したい場合は、以下の図のように関数を記述すればよい。
この関数をオートフィルでコピーすると、「20~80の整数」をランダムに好きなだけ作成できる。
なお、この関数も入力操作を行うたびに乱数が再生成される仕組みになっている。生成した数値をそのまま固定しておきたい場合は、先ほど示した手順で「値」だけを貼り付けるコピー&ペーストを実行する必要がある。
関数RANDよりも「乱数の範囲」を手軽に指定できるので、こちらをメインに活用してもよいだろう。ただし、関数RANDBETWEENで生成される乱数は「整数」に限定されることを覚えておく必要がある。小数点以下を含む乱数は生成できない。
関数RANDARRAYを使ってダミーの数値データを作成
Excel 2021やMicrosoft 365を使用している場合は、RANDARRAYという関数を使って乱数を生成することも可能だ。この関数はスピルに対応しているため、オートフィルでコピーしなくても「複数個の乱数」を自動生成できるのが利点となる。
◆関数RANDARRAYの書式
=RANDARRAY([行数],[列数],[最小値],[最大値],[整数])
・第1引数
乱数を生成する「行数」を指定する。省略すると「1行」とみなされる。
・第2引数
乱数を生成する「列数」を指定する。省略すると「1列」とみなされる。
・第3引数
生成する乱数の「最小値」を指定する。省略すると「0」とみなされる。
・第4引数
生成する乱数の「最大値」を指定する。省略すると「1」とみなされる。
・第5引数
TRUE(整数)/FALSE(小数点以下を含む)のいずれかを指定する。
たとえば、「20~80の整数」を25個(25行、1列)だけ作成したい場合は、以下の図のように関数を記述すればよい。
「Enter」キーを押すと、「20~80の整数」で乱数が25個(25行、1列)だけ生成される。オートフィルで関数RANDARRAYをコピーする必要はない。
※乱数の生成先セルは「空白セル」にしておく必要がある。生成先セルに何らかのデータが入力されていた場合は「#スピル!」のエラーが発生する。
関数RANDARRAYも入力操作を行うたびに乱数が再生成される仕組みになっている。生成したダミーデータを固定しておきたい場合は、コピー&ペーストで「値」だけを貼り付けてあげるとよい。
引数の数は多くなるが、関数RANDARRAYが最も手軽に乱数を作成できるといえるだろう。Excel 2019以前の方も「いつかバージョンアップしたときに使える関数」として、念のため覚えておくとよい。
今回の連載では、RAND、RANDBETWEEN、RANDARRAYといった関数を使って「年齢」のダミーデータを作成する方法を紹介した。これらの関数を応用して「性別」や「都道府県」などのダミーデータを作成することも不可能ではない。これについては次回の連載で詳しく紹介していこう。