=RANDBETWEEN(1,100)は、両端を含めて1から100までのランダムな整数を返します。=RAND()は、0以上1未満のランダムな小数を返します。どちらもシートが再計算されるたびに新しい数を返します。
| A | B | |
|---|---|---|
| 1 | Formula | Result |
| 2 | Decimal 0 to 1 | 0.256679579 |
| 3 | Whole 1 to 100 | 24 |
| 4 | Die roll | 4 |
| 5 | Coin | Tails |
どれかのセルを編集する(たとえばA6に単語を入力する)と、すべての結果が変わります。Excelでは、ブックのどこを編集しても同じことが起こり、F9を押すと新しい組になります。ここに見えている数は、ほかの読者が見ている数とは違います。
RAND関数とRANDBETWEEN関数の構文
=RAND()
=RANDBETWEEN(bottom, top)
RANDは引数を取りませんが、空のかっこは必須です。RANDBETWEENは返してよい最小と最大の整数を受け取り、bottom(最小値)がtop(最大値)より大きいと#NUM!を返します。
2つの値の間の乱数
RANDBETWEENが返すのは整数だけです。範囲内のランダムな小数が欲しいときはRANDを拡大します。範囲の幅を掛けて、最小値を足します。小数点以下2桁にするならROUNDで囲みます。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Min | Max | Kind | Random value |
| 2 | 10 | 50 | Whole | 46 |
| 3 | 10 | 50 | Decimal | 49.74 |
| 4 | 2026-01-01 | 2026-12-31 | Date | 2026-09-04 |
| 5 | -5 | 5 | Whole | -5 |
A列とB列の最小値と最大値を変えても、結果は新しい範囲の中に収まります。Excelでは日付は整数なので、2つの日付の間のRANDBETWEENはランダムな日付を返します。セルの表示形式を日付にしないと(ホーム > 表示形式 > 短い日付形式)、シリアル値が表示されます。マイナスの範囲も使えます。
RANDARRAY: たくさんの乱数を一度に
Excel 365とExcel 2021では、=RANDARRAY(rows, columns, min, max, whole_number)で1つのセルから範囲全体を埋められます。引数はどれも省略でき、=RANDARRAY(5)は0から1までの小数を5つ縦に並べます。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Whole numbers 1 to 100 | Decimals 0 to 1 | ||
| 2 | 64 | 23 | 31 | 0.040617832 |
| 3 | 83 | 89 | 55 | 0.480702855 |
| 4 | 95 | 78 | 92 | 0.305043489 |
| 5 | 4 | 36 | 92 | 0.133745562 |
| 6 | 44 | 73 | 64 | 0.581903097 |
A2はA2:C6を整数で埋めます(最後の引数TRUEが整数を指定しています。小数なら省略します)。Excel 2019以前にはRANDARRAYがないので、1つのセルに=RANDBETWEEN(1,100)を書き、範囲全体にコピーします。
リストからランダムに1つ選ぶ
ランダムに名前、商品、問題を引くには、RANDBETWEENでランダムな位置を選び、INDEXでその位置の項目を返します。COUNTAが名前を数えるので、範囲はリストを越えて空の行まで広げておけます。=INDEX(A2:A100,RANDBETWEEN(1,COUNTA(A2:A100)))なら、下に名前を追加しても動き続けます。
| A | B | C | |
|---|---|---|---|
| 1 | Name | Winner | |
| 2 | Ana | Finn | |
| 3 | Ben | ||
| 4 | Cleo | ||
| 5 | Dan | ||
| 6 | Eve | ||
| 7 | Finn |
どの名前も同じ6分の1の確率で選ばれます。この数式を2つのセルに置くと、同じ名前を引くことがあります。異なる当選者を何人か選ぶなら、代わりにリストをシャッフルして(次の節)上の行を取ります。
リストのシャッフルと重複しない乱数
=SORTBY(A2:A7,RANDARRAY(6))はリストを6つの乱数で並べ替えるので、ランダムな順番になります。各項目は1回ずつしか現れないので結果が重複することはなく、Excel 365と2021で異なる名前や数をいくつか引く定番の方法です。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Shuffled | 3 of 1 to 20 | ||
| 2 | Ana | Finn | 8 | ||
| 3 | Ben | Ben | 3 | ||
| 4 | Cleo | Ana | 12 | ||
| 5 | Dan | Cleo | |||
| 6 | Eve | Eve | |||
| 7 | Finn | Dan |
E2は、SEQUENCEで作った1から20までの数をシャッフルし、TAKEで最初の3つを残すので、3つは必ず異なります。TAKEにはMicrosoft 365かExcel 2024が必要です。Excel 2021では=INDEX(SORTBY(SEQUENCE(20),RANDARRAY(20)),SEQUENCE(3))と書きます。Excel 2019では、リストの隣の作業列に=RAND()を置き、データ > 並べ替えでその列を基準にリストを並べ替えます。
やってみよう: 乱数を自分で拡大する
RANDBETWEENは、RANDを範囲に合わせて拡大し、整数に切りそろえたものです。ここでB2には、かつてRANDが返した値が値として貼り付けてあるので、もう変わりません。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Item | RAND value | Whole number | Min | Max |
| 2 | Draw 1 | 0.372 | 5 | 12 |
やってみよう: B2にはRANDの値が入っています。C2で、RANDBETWEENと同じやり方で、それをD2の最小値からE2の最大値まで(両端を含む)の整数に変えてください。取りうる数の個数を掛け、INTで小数部分を捨て、最小値を足します。
ヒント: 5から12までにはE2-D2+1、つまり8個の数があります。
よくある間違い: 使った後で結果が変わる
次の編集で変わってしまう抽選結果は、誰が当選したかやどの行を標本にしたかの記録として役に立ちません。欲しい数が得られたら、値に変えます:
- セルを選んでコピーします(Ctrl+C、MacではCmd+C)。
- ホーム > 貼り付け > 値を選びます。WindowsではCtrl+Alt+Vの後V、Enter、MacではCtrl+Cmd+Vの後「値」を選びます。
1つのセルなら、F2で編集し、F9で数式を現在の結果に置き換え、Enterを押します。テストや授業の練習で毎回同じ「乱数」が必要でも、Excelにはシードの引数がありません。一度値を貼り付けて、そのシートを保存しておいてください。RANDは標本、ゲーム、テストデータには十分ですが、パスワードやセキュリティに関わるものには向きません。
よくある質問
Excelで2つの数の間の乱数を作るには?
整数なら=RANDBETWEEN(10,50)を使います。10と50のどちらも返ることがあります。小数なら=RAND()*(50-10)+10か、Excel 365や2021では=RANDARRAY(1,1,10,50)を使います。
Excelで乱数が変わらないようにするには?
数式を値に置き換えます。セルをコピーして、ホーム > 貼り付け > 値を選びます。WindowsではCtrl+Alt+V、V、Enterでも同じです。MacではCtrl+Cmd+Vで「形式を選択して貼り付け」が開くので、「値」を選びます。1つのセルなら、F2、F9(一部のノートパソコンではFn+F9)、Enterの順に押します。
Excelでリストからランダムに名前を選ぶには?
=INDEX(A2:A7,RANDBETWEEN(1,COUNTA(A2:A7)))を使います。COUNTAが名前を数え、RANDBETWEENが位置を選び、INDEXがその位置の名前を返します。
Excelで重複しない乱数を作るには?
連番をシャッフルして先頭のいくつかを取ります。Excel 365では=TAKE(SORTBY(SEQUENCE(50),RANDARRAY(50)),6)で1から50の異なる6つの数が得られます。TAKEのないExcel 2021では=INDEX(SORTBY(SEQUENCE(50),RANDARRAY(50)),SEQUENCE(6))を使います。いくつかのセルにRANDBETWEENを置くと、重複することがあります。
Excelでランダムな日付を作るには?
2つの日付を指定したRANDBETWEENを使います。=RANDBETWEEN(DATE(2026,1,1),DATE(2026,12,31))は2026年のランダムな日を返します。セルの表示形式を日付にしないと、日付のシリアル値が表示されます。