Excel(エクセル)では、関数を使って、ランダムな整数や実数(小数点がある数値)を作成することができます。
ランダムな整数や実数を作る関数は、RAND関数、RANDBETWEEN関数、RANDARRAY関数の3つがあり、それぞれに特徴があります。
これらの関数は、他の関数などと利用することで、ランダムな抽選や席替え、並べ替え、パスワード作成などができるようになります。
この記事では、ランダムな数値を作成するRAND関数とRANDBETWEEN関数とRANDARRAY関数の使い方と、実務に役立つ事例を8つを紹介します。
この記事で紹介する実用的な使い方8薦
- ランダムに当選者を決める方法
- ランダムに並び替えする方法
- ランダムに順番を決定する方法
- ランダムに席替え(席順)する方法
- ランダムでレイアウト自由な座席表を作成する方法
- ランダムなパスワードを作成する方法
- 足し算などの四則演算用の計算ドリルを作成する方法
- ランダムな売上サンプルデータを作成する方法
ランダムな整数や実数を自動で作成する3つの関数
エクセルには、ランダムな数値を作成するための3つの関数が備わっています。ただ、最後のRANDARRAY関数は、Microsoft365とExcel2021以降のユーザーに限定されています。
3つのランダム関数
RAND関数 ⇒ 0~1未満の小数点を含んだ数値を自動で作成
RANDBETWEEN関数 ⇒ ランダムな整数を作成
RANDARRAY関数 ⇒ ランダムな整数や小数点を含んだランダムな数値を作成 ※ユーザー限定
それでは、それぞれの関数の使い方を詳しく解説していきます。
RAND関数:0以上1未満のランダムな数値を作成
まずは、RAND関数(ランド関数)の使い方を紹介します。
RAND関数は、0以上で1より小さい実数の「乱数」を発生させる関数です。
乱数とは、0から9までの数字が不規則で、同じ確率に現れるように配列されたもののことをいいます。
「F9」キーを押す、などのExcel操作によって、再計算する度に新しい乱数に変更されます。
RAND関数の書式と引数は以下のとおりです。
=RAND()
普通の関数の構文とは少し異なり、引数が無い関数です。この関数を使用すると下の図のように0~1の異なる数値がランダムに発生されます。
上の図では、小数7桁までしか表示されていませんが、桁数を広げて表示すると、実際は下のように小数点15桁までが作成されています。
そのため、複数のセルにRAND関数を使っても、発生する乱数が重複する可能性はまずありません。
このランダムな数値は、「F9」キーやセルのダブルクリックなどの様々な操作により、下の図のようにRAND関数の数値が何度でも変更されます。
ちなみに、ファンクションキー「F9」はワークシートの再計算の機能を持っているよ。
RANDBETWEEN関数:ランダムな整数を作成
次に紹介するのは、RANDBETWEEN関数です。
RANDBETWEEN関数の読み方は、「ランド・ビットウィーン、ランダム・ビットウィーン」です。
RANDBETWEEN関数は、指定した数値の範囲内でランダムな整数の乱数を作成する関数です。
こちらもRAND関数と同様に、「F9」キーを押す、などのエクセル操作で再計算する度に新しい乱数に変更されます。
RAND関数とRANDBETWEENの違いは、小数点付の15桁の乱数が発生するか、それとも整数の乱数が発生するか、とうことです。
RANDBETWEEN関数の構文と引数は、以下のとおりです。
=RANDBETWEEN(最小値,最大値)
引数に最大値と最小値を指定するだけのシンプルな関数です。
整数で範囲を指定できるため、小数点15桁の乱数を作成するRAND関数と異なり、重複する可能性があるという点は少し注意が必要です。
例えば、RANDBETWEEN関数で最小値を”-50”、最大値を”50”と指定すると、-50から50までの範囲の整数が自動で作成されます。
=RANDBETWEEN(-50,50)
RANDARRAY関数:ランダムな数値を自在に作成
RANDARRAY関数は、整数や小数点を含む数値(実数)を作成することができる最近登場した新関数です。
ただ、利用できるユーザーは、Microsoft365とExcel2021以降と限定されています。
RANDARRAY関数の読み方は、「ランド・アライ関数」です。
RANDARRAY関数の構文と引数は、以下のとおりです。
=RANDARRAY([行],[列],[最小値],[最大値],[整数])
5つの引数の内容は、以下のとおりです。
第1引数「行」:何行分の乱数を作成したいか数値で指定(例:3)
第2引数「列」:何列分の乱数を作成したいか数値で指定(例:3)
第3引数「最小値」:乱数の最小値を数値で指定(例:1)
第4引数「最大値」:乱数の最大値を数値で指定(例:100)
第5引数「整数」:整数の乱数を作る場合は「TRUE」、10 進数の乱数を作成する場合は、「FALSE」を指定します。(例:TRUE、FALSE)
例えば、下のRANDARRAY関数すると、縦3行分、横5列分のセル範囲に1~50の範囲内の整数を作成することができます。
=RANDARRAY(3,5,1,50,TRUE)
上の例では、RANDARRAY関数を挿入しているセルはB2のみですが、関数の結果は拡張されて表示されます。この機能のことをスピルといいます。
RAND関数とRANDBETWEEN関数を使った事例を8つ紹介
それでは、RAND関数やRANDBETWEEN関数を使った、実用的な使い方の事例を8つをご紹介します。
事例1.ランダムに当選者を決める方法
RAND関数の具体的な使い方として、生徒名簿から当選者をランダムに3名抽出する方法をご紹介します。
RAND関数だけでは乱数が発生させることしかできないので、IF関数とRANK.EQ関数(ランクイコール)も組み合わせて利用します。
乱数のリストをRANK.EQ関数でランク付けしてから、IF関数でその上位”3名”を”当選”と表示させます。
RANK.EQ関数だけ見慣れない関数だと思うので、構文を紹介します。
=RANK.EQ(数値,参照,順序)
- 数値:順位を求めたい数値を指定します。
- 参照:数値データ全体を指定します。
- 順序:1または0以外を指定すると昇順となり、0を指定すると降順になります。省略すると降順となります。
それでは具体的に手順で説明します。
手順1.RAND関数を挿入
生徒名簿の右列にRAND関数を挿入します。
手順2.IF関数の中にRANK.EQ関数を挿入
さらに、RAND関数の右列に、RANK.EQ関数が挿入されたIF関数を挿入します。
RAND関数で発生した乱数のうち、数値の小さい上位3名を”当選”、それ以外を”-”と表示されます。
=IF(RANK.EQ(C3,$C$3:$C$11)<=3,"当選","-")
IF関数が不慣れな方は、こちらの記事も参考にしてみて。
手順3.「F9」キーでランダムに変わるか確認
ファンクションキー「F9」を押したり、空白のセルをダブルクリックなどして、当選者がランダムに変われば無事完了です。「RAND関数」列が邪魔であれば、非表示にしてください。
事例2.並び順をランダムに変更する方法
2つ目のRAND関数の事例は、生徒名簿の並び順をランダムに変更する方法です。
RAND関数だけでは乱数が発生するだけなので、自由に表を並び替えることが出来るフィルター機能を組み合わせます。
手順1.RAND関数を挿入
下の図のように、生徒リストに連番をつけて、右端の列にRAND関数を挿入します。
手順2.フィルターを設定
「データ」タブの「フィルター」ボタンを使って、「生徒」列と「RAND関数」列の2行にだけフィルターを設定します。
手順3.「RAND関数」列のフィルタを操作
「RAND関数」列のフィルターの▼ボタンをクリックし、「昇順」もしくは「降順」を選択して並び替えします。
RAND関数はフィルタの操作でも乱数を変化させますので、この操作を行うごとに「生徒」列の並び順も変化します。
手順4.「F4」キーでランダムに並べ替え
手順3でフィルターを操作したことをExcelが記憶してくれています。そのため、前回操作を繰り返すことが出来るファンクションキー「F4」を押すごとに並び順がランダムに変化します。
事例3.ランダムに順番を決定する方法
3つ目の事例は、RAND関数を使って名簿からランダムに順番を決める方法を紹介します。
会社での朝礼順や発表順などを無作為に決める時に利用すると便利です。
手順1.RAND関数を挿入
下の図のように、「生徒」列の右横にRAND関数を挿入します。
手順2.RANK.EQ関数を挿入
手順1で作成した「RAND関数」列の右横に、RANK.EQ関数を挿入します。RANK.EQ関数は、上でも紹介したように、指定したセル範囲の中の数値をランク付けする関数です。
=RANK.EQ(C3,$C$3:$C$11,1)
手順3.RANK.EQ関数を下のセルにも挿入
後は、ファンクションキー「F9」キーを押すごとに、生徒の順番、並び順が都度更新されます。「RAND関数」列が不要な場合は、C列は非表示にしてください。
事例4.ランダムに席替え(席順)を決める方法
4つ目の事例は、RAND関数を使って、教室の生徒の席替え(席順)をランダムに決定する方法をご紹介します。
RAND関数だけでは乱数が発生するだけなので、VLOOKUP関数も組み合わせて利用します。
手順1.座席表を作成
下の図のように罫線を引いて教室の座席表を作成します。座席の番号に番号(1~)を入力します。数値の下のセルは、次のステップでVLOOKUP関数を挿入するので、1行空けてください。
手順2.「生徒名簿リスト」シートを作成
手順1とは異なるワークシートに、「生徒名簿リスト」シートを新規に追加します。
手順3.生徒名簿リストを作成
下の生徒名簿リストを作成します。左端が「RAND関数」列、中央が「RANK.EQ関数」列、右端が「名前」列です。RANK.EQ関数は、下の数式を挿入して、RAND関数の乱数を順位付けします。
=RANK.EQ(B3,$B$3:$B$11)
次のステップに影響するから、「生徒」列は、必ず右端に作成してね。
手順4.座席表にVLOOKUP関数を挿入
手順1で作成した教室の座席表の番号の下のセルにVLOOKUP関数を挿入して、手順3の生徒名簿リストの「ランク」列の数値にあう名前を抽出します。
例えば、B5セルに挿入するVLOOKUP関数は下の通りです。
=VLOOKUP(B4,生徒名簿リスト!$C$2:$D$11,2,FALSE)
そうすると、「生徒名簿リスト」シートと「座席表」シートの番号と名前の組み合わせが合致します。
手順5.「F9」キーでランダムに席替えが決定されるか確認
ファンクションキー「F9」キーを押すことで、教室の席順がランダムに変われば無事完了です。座席の数値が邪魔であれば、フォントの色を白色に塗りつぶしてください。
事例5.座席表のレイアウトを自由に変更できるランダムな席替え
事例4で紹介した座席表は、セルのサイズに合わせて座席のデザインを決定する必要がありました。
テキストボックスとRAND関数を使うことで、下の図のように、レイアウトや座席の形を自由に調整できるランダムな座席表を作成することができます。
ランダムな座席表
【【エクセル】座席表の簡単な作り方!円卓でも教室でもレイアウトや席順を自由に変更!】の記事で作成方法を紹介していますので、こちらを参考にして下さい。
事例6.ランダムなパスワードを作成する方法
6つ目の事例は、RANDBETWEEN関数を用いて英数字混合のランダムなパスワードを作成する方法です。。
使用する関数は、文字の指定した位置から文字数を切り出して表示できる『MID関数』、文字数を数える『LEN関数』の2つも組み合わせて利用します。
F9キーを押すごとに、無作為に抽出されたアルファベットと1~9の数字が表示されます。
下のリンク記事で以下の2種類のパスワードの作成方法を紹介していますので、詳しい作成方法を知りたい方はリンクにジャンプして下さい。
- 英数字混合のランダムなパスワード
- 少なくとも1文字のアルファベットと数値を混合するランダムなパスワード
事例7.足し算などの四則演算用の計算ドリルを作成
小学生用の足し算や引き算などの四則演算の計算ドリルを作成する時には、RANDBETWEEN関数が活躍します。
RANDBETWEEN関数は好きな範囲の整数をランダムに作成することが出来るので、小学生向けの四則演算の計算ドリルをお手製で作成するのにすごく役立ちます。
うちの子の計算ドリルを作成する時によく使ってるので、この使い方が特にお気に入りです。
手順1.足し算に使う数値を作成
足し算に使用する数値をRANDBETWEEN関数で作成します。答えを手書するための入力枠も作成してください。
小学生の学力に合わせてRANDBETWEEN関数の最小値と最大値を調整してください。下の例では、2桁の数値と2桁の数値の足し算を作成しようとしています。
=RANDBETWEEN(10,99)
手順2.解答枠を作成
答え合わせ用に解答用の数式「=B4+D4」を挿入します。このセル範囲は印刷範囲から外すか、印刷しても折りたたんで、解答を隠せるように作成します。
このように足し算だけでなく、引き算や掛け算でも計算ドリルを簡単に作成できます。
割り算の計算ドリルを作る場合は、答えのセルにRANDBETWEEN関数を挿入することで、答えが整数となる計算ドリルを作成することが出来ます。
足し算、引き算、掛け算、割り算の算数ドリルの詳しい作り方は下の記事で紹介していますので、興味のある方はぜひ参考にしてみてください。
事例8.売上サンプルデータを作成
8つ目の事例は、売上明細などのサンプルデータを作成する方法です。
大量のセルに適当な数値を手入力していくのは大変です。そんな時にはRAND関数とRANDBETWEEN関数が大活躍します。
まず、単価列に100未満の少数第2位の実数を作成するため、以下の数式を挿入します。
「RANDBETWEEN(10,99)」で10から99までの整数を作り、その数値にRAND関数の0から1までの1未満の実数を足します。その結果をROUND関数で少数第2位で四捨五入しています。
=ROUND(RANDBETWEEN(10,99)+RAND(),2)
次に、右隣りの列にRANDBETWEEN関数を挿入し、100から1,000までの販売数量をランダムに作成します。
最後に、「販売高」列に「単価×販売数量」の数式を挿入すれば、売上サンプルデータの完成です。
値が都度変わると困る場合は、C列とD列は値貼り付けして、数値が動かないようにしてください。
実数の桁数や小数を調整したい場合は、RANDBETWEEN関数とRAND関数とROUND関数を組み合わせて数式を作成します。以下の表を数式の作成に利用してください。
桁数 | 小数第2位までの ランダムな数値 | 数式 |
1桁 | 4.59 | =ROUND(RANDBETWEEN(1,9)+RAND(),2) |
10桁 | 35.96 | =ROUND(RANDBETWEEN(10,99)+RAND(),2) |
100桁 | 361.34 | =ROUND(RANDBETWEEN(100,999)+RAND(),2) |
1000桁 | 1731.35 | =ROUND(RANDBETWEEN(1000,9999)+RAND(),2) |
ランダムな数値の桁数と小数を調整する方法
ランダムな数値の桁数と小数を調整する方法を解説します。
RAND関数は0~1未満の実数、RANDBETWEEN関数は整数を生成するため、桁数と少数を調整するには少しテクニックが必要です。
例えば、小数点を含む1桁のランダムな数字を作成したい場合には、下のようにRANDBETWEEN関数で1~9までの整数を作成し、RAND関数と足し算することで実現できます。
1桁の小数点を含むランダムな数値を作成
=RANDBETWEEN(1,9)+RAND()
小数点を含む10桁のランダムな数字を作成する場合も、RANDBETWEEN関数の範囲を10~99に変更するだけで可能です。
10桁の小数点を含むランダムな数値を作成
=RANDBETWEEN(10,99)+RAND()
100桁以上の数値ももちろん作成可能です。下の表を参考にRANDBETWEEN関数の引数を調整して下さい。
桁数 | ランダムな数値 | 数式 |
1桁 | 3.141602574 | =RANDBETWEEN(1,9)+RAND() |
10桁 | 31.07260478 | =RANDBETWEEN(10,99)+RAND() |
100桁 | 126.1904303 | =RANDBETWEEN(100,999)+RAND() |
1000桁 | 5029.062969 | =RANDBETWEEN(1000,9999)+RAND() |
小数点の位を調整する場合は、ROUND関数を利用して、実数の小数を調整します。
=ROUND(RANDBETWEEN(1,9)+RAND(),2)
ランダムな整数が重複していないかチェックする方法
RANDBETWEEN関数は整数で範囲を絞るために、重複の可能性があります。
重複しないような整数のランダム関数を作成すると、VBAなどの高度な技術が必要です。
そのため、RANDBETWEEN関数の最小値と最大値の範囲を広げたり、小数点を含むRAND関数を併用して重複しないような利用方法を心がけましょう。
それでも重複が心配な方は下のように、重複データが無いかチェックする方法を解説します。
まず、重複していないかチェックしたいセル範囲を選択します。(図①)
「ホーム」タブの「条件付き書式」コマンドから「セルの強調表示ルール」⇒「重複する値」を選択します。(図➁)
そうすると、数値が重複しているセルは、ピンク色で表示されます。下の図では、「16」のセルが2つあることが分かります。
重複データの確認は、他にも3つの方法があります。以下の記事で紹介しているので合わせて参考にしてください。
ランダムな整数と実数を動かないように固定する方法
ランダムな数値はファンクションキーの『F9』キーを押すなどに、再計算されて何度も数値が更新されます。
利用する状況によっては、数値が更新されると困る場合もあるので、ランダムな数値を動かないように固定する方法を2つ紹介します。
ランダムな数値を挿入時に固定する
RAND関数やRANDBETWEEN関数を作成して、『Enter』キーで確定する前に『F9』キーを押します。
そうすると、下のようにセルの値は、ランダムな数値が固定されて表示されます。
複数のセルを一括で固定したい場合は、次の見出しで紹介する方法の利用して下さい。
ランダムな数値を値で貼り付けて固定する
ランダムな数値を固定する2つ目の方法は、RAND関数を挿入した後に、値で貼り付け直して固定値に変換します。
RAND関数やRANDBETWEEN関数が挿入されたセルを選択して、「Ctrl+C」キーでコピー(図①)します。
そのあとに、右クリックメニューを開き、「値のみ」貼り付けを選択します。