「1〜100の中からランダムに整数を出したいけど、どうすればいいんだろう?」
くじ引きやテストデータの作成など、ランダムな整数がほしい場面は意外と多いですよね。
そんなときはRANDBETWEEN関数の出番です。範囲を指定するだけで整数の乱数をかんたんに生成できますよ。
この記事では、RANDBETWEEN関数の基本からくじ引き・テストデータ作成の応用例、乱数の固定方法まで解説します。
RANDBETWEEN関数とは?スプレッドシートで整数の乱数を生成する関数
RANDBETWEEN関数は、指定した範囲内のランダムな整数を返す関数です。読み方は「ランドビトウィーン関数」。「Random Between(2つの値の間のランダムな数)」が語源です。
たとえば =RANDBETWEEN(1,100) と入力すると、1〜100のどれかの整数が表示されます。
再計算するたびに値が変わるのが特徴です。
NOTE
RANDBETWEEN関数は揮発性関数です。セルを編集したりシートを開き直したりするだけで値が変わります。結果を確定させたいときは「値貼り付け」で固定してください(方法は後述します)。
RANDBETWEEN関数の書き方(構文と引数)
基本構文
=RANDBETWEEN(下限, 上限)
2つの引数で「最小値」と「最大値」を指定するだけのシンプルな構文です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 下限(low) | 必須 | 乱数の最小値となる整数を指定します |
| 上限(high) | 必須 | 乱数の最大値となる整数を指定します |
| 項目 | 内容 |
|---|---|
| 戻り値 | 下限以上・上限以下のランダムな整数(両端を含む) |
| 対応環境 | Googleスプレッドシート / Excel 2007以降 / Microsoft 365 |
TIP
引数に小数を指定した場合、小数点以下は切り捨てられて整数として扱われます。たとえば
=RANDBETWEEN(1.5, 9.8)は=RANDBETWEEN(1, 9)と同じ動作です。
RANDBETWEEN関数の基本的な使い方
1から10のランダムな整数を生成する
もっとも基本的な使い方です。セルに以下の数式を入力します。
=RANDBETWEEN(1,10)
Enterを押すと、1から10のどれかの整数が表示されます。別のセルを編集すると値が変わりますが、これは揮発性関数の仕様です。
負の数を含む範囲を指定する
下限にマイナスの値を指定することもできます。
=RANDBETWEEN(-50,50)
-50から50までのランダムな整数を返します。温度データや差異のテストデータを作りたいときに便利です。
0か1をランダムに生成する
フラグ(ON/OFF)のテストデータを作るときに使えるパターンです。
=RANDBETWEEN(0,1)
0または1がランダムに返されます。大量のテストデータにフラグを付けるときに重宝しますよ。
RANDBETWEEN関数の実践的な使い方・応用例
パターン1: くじ引き・抽選番号を作る
社内イベントやプレゼント企画で抽選番号を割り振りたいときに使えます。
参加者がA列(A2:A11)に10名入っているとします。B2セルに以下の数式を入力して下方向にコピーします。
=RANDBETWEEN(1,100)
各参加者にランダムな番号が割り振られます。一番大きい番号の人が当選、というルールにすればOKです。
NOTE
RANDBETWEEN関数は重複する値を返すことがあります。重複なしの抽選をしたい場合は、RAND関数でランダムな小数を振り、SORT関数で並べ替える方法がおすすめです。
パターン2: テストデータを大量に作成する
ダミーデータがほしいことってありますよね。RANDBETWEEN関数なら一瞬で作れます。
売上金額のテストデータ(1,000円〜50,000円):
=RANDBETWEEN(1000,50000)
年齢のテストデータ(20歳〜65歳):
=RANDBETWEEN(20,65)
ランダムな日付を生成する:
=RANDBETWEEN(DATE(2026,1,1),DATE(2026,12,31))
セルの表示形式を「日付」に変更してみてください。2026年内のランダムな日付が表示されます。
スプレッドシートの日付はシリアル値(整数)なので、RANDBETWEEN関数と相性抜群です。DATE関数の使い方は別の記事で詳しく解説しています。
TIP
テストデータを大量に一括生成したいときは、RANDARRAY関数が便利です。行数・列数を指定するだけで、複数の乱数をまとめて作れますよ。
パターン3: リストからランダムに1件抽出する
名簿からランダムに1件を選びたいとき、INDEX関数と組み合わせると実現できます。
A列にデータが10件(A2:A11)入っているとします。
=INDEX(A2:A11,RANDBETWEEN(1,10))
RANDBETWEEN関数が1〜10のランダムな行番号を返します。INDEX関数がその行のデータを取り出す仕組みです。
データ件数が変わる場合は、COUNTA関数で自動カウントしましょう。
=INDEX(A2:A11,RANDBETWEEN(1,COUNTA(A2:A11)))
パターン4: CHOOSE関数でランダムにカテゴリを振り分ける
CHOOSE関数と組み合わせると、ランダムな文字列の振り分けができます。
=CHOOSE(RANDBETWEEN(1,3),"営業部","開発部","総務部")
RANDBETWEEN関数が1〜3を返します。CHOOSE関数が対応する部署名を表示する仕組みです。
パターン5: IF関数で2択をランダムに振り分ける
IF関数と組み合わせた2択のランダム振り分けです。
=IF(RANDBETWEEN(1,2)=1,"合格","不合格")
A/Bテスト振り分けやテストデータの合否フラグに使えます。
パターン6: SORT+RANDで重複なしのランダム並べ替え
RANDBETWEEN関数は同じ値を返すことがあるため、重複なしの抽選には別の方法が必要です。そんなときは並べ替えを使ったシャッフルが便利です。
A列にデータが10件(A2:A11)入っているとします。次の数式で重複なしのランダム並べ替えができます。
=SORT(A2:A11, RANDARRAY(COUNTA(A2:A11)), 1)
RANDARRAY関数が件数ぶんの乱数配列を生成し、SORT関数がその乱数をキーに並べ替えます。件数はCOUNTA関数で自動カウントしているため、データ件数が変わっても数式を直す必要はありません。
シートを更新するたびに並び順がランダムに変わり、上から必要な件数を取り出せば重複なしの抽選として使えます。
よくあるエラーと対処法
RANDBETWEEN関数で遭遇しやすいエラーをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
#NUM! エラー | 下限が上限より大きい | 引数の順序を確認する(下限 <= 上限) |
#VALUE! エラー | 引数に文字列が含まれている | 数値またはセル参照を使用する |
#NAME? エラー | 関数名のスペルミス | RANDBETWEEN のスペルを確認する |
| 値が勝手に変わる | 揮発性関数の仕様 | 値貼り付け(Ctrl+Shift+V)で固定する |
| 同じ値が繰り返し出る | ランダムなので偶然の重複 | 範囲を広げるか、RAND関数で重複なしの方法を使う |
| 小数が返されない | RANDBETWEEN関数は整数のみ返す | 小数の乱数が必要ならRAND関数を使う |
NOTE
Excelでは下限 > 上限のとき
#VALUE!エラーですが、スプレッドシートでは#NUM!エラーになります。検索して対処法を探すときはこの違いに注意してください。
よくある質問(FAQ)
Q1. 重複しない乱数を生成するにはどうすればいいですか?
RANDBETWEEN関数は重複した値を返すことがあります。重複なしにするには、RAND関数でランダムな小数を振り、SORT関数で並べ替える方法がおすすめです。RANDARRAY関数とSORT関数を組み合わせると、一括で重複なしのシャッフルができます。
Q2. 生成した乱数を固定(変わらなくする)にはどうすればいいですか?
数式が入ったセルをコピーし、Ctrl + Shift + V(Macは Cmd + Shift + V)で「値のみ貼り付け」をしてください。数式が消えて、その時点の数値が固定されます。再計算しても値は変わらなくなります。
Q3. ExcelでもRANDBETWEEN関数は使えますか?
はい、使えます。構文・戻り値ともに同じです。ただし、下限が上限より大きいとき、Excelは #VALUE!、スプレッドシートは #NUM! と異なるエラーが出る点に注意してください。
Q4. RANDBETWEENで小数を生成することはできますか?
できません。RANDBETWEEN関数は整数のみを返します。小数が必要な場合はRAND関数(0以上1未満)を使い、スケールアップしてください。たとえば =RAND()*100 とすれば0〜100の小数を生成できます。
Q5. RANDBETWEEN関数で同じ値が連続して出るのはバグですか?
バグではありません。乱数なので重複は起こりえます。統計的に見れば同じ値が連続することもあり、これは仕様の範囲内です。重複を避けたい場合は、SORT関数とRAND関数の組み合わせをお使いください。
RAND関数との違いと使い分け
RANDBETWEEN関数と似た関数にRAND関数があります。違いを整理しておきましょう。
比較表
| 比較項目 | RANDBETWEEN(下限, 上限) | RAND() |
|---|---|---|
| 引数 | 下限・上限の2つ | なし |
| 戻り値 | 指定範囲の整数 | 0以上1未満の小数 |
| 揮発性 | あり | あり |
| 典型的な用途 | くじ引き・テストデータ | 確率計算・シャッフル |
どちらを選ぶべきか
迷ったときは、次の基準で選んでみてください。
- RANDBETWEEN: 整数の乱数がほしい。範囲が決まっている。シンプルに使いたい
- RAND: 小数の乱数がほしい。確率の計算に使いたい。他の関数と組み合わせて加工したい
「1〜6の整数」のような単純なケースはRANDBETWEEN関数が手軽です。一方、リストのシャッフルや確率シミュレーションにはRAND関数が向いています。
「整数ならRANDBETWEEN、それ以外はRAND」と覚えておけばOKです。
なお、乱数を複数セルに一括で作りたいときはRANDARRAY関数が最適です。1つのセルに数式を入れるだけで、指定した行数×列数の乱数を一気に生成できますよ。
揮発性関数の注意点と乱数の固定方法
RANDBETWEEN関数は便利ですが、揮発性ゆえの落とし穴があります。
再計算で値が変わるタイミング
RANDBETWEEN関数は揮発性関数です。通常の関数は参照先のセルが変わったときだけ再計算されますが、揮発性関数はシート上のどこかが変更されるだけで再計算が走ります。
| 操作 | 値が変わるか |
|---|---|
| 任意のセルを編集してEnter | 変わる |
| シートを開き直す | 変わる |
| 別のセルに数式を入力する | 変わる |
| セルの書式だけ変更する | 変わらない |
「さっきの結果をもう一度見たい」と思っても、固定していなければ元の値は取り戻せません。
値貼り付けで固定する方法
乱数を固定するには、数式を値に変換します。手順は次のとおりです。
- RANDBETWEEN関数が入ったセル範囲を選択してコピー(
Ctrl + C/ MacはCmd + C) - そのまま
Ctrl + Shift + V(MacはCmd + Shift + V)で値のみ貼り付け - 数式が消えて、コピー時点の数値だけが残る
これで再計算しても値は変わりません。
コピー: Ctrl + C
値貼り付け: Ctrl + Shift + V
くじ引きやテストデータの結果を確定させたいときは、結果が出たらすぐに値貼り付けを習慣にしましょう。
TIP
RANDBETWEEN関数を大量に使うと再計算のたびにシートが重くなります。テストデータ作成後は値貼り付けで固定しておくのがおすすめです。
まとめ
RANDBETWEEN関数は、指定範囲のランダムな整数を返す関数です。
この記事で紹介した内容をおさらいします。
- 基本:
=RANDBETWEEN(下限, 上限)で整数の乱数を生成 - テストデータ: 売上金額・年齢・日付など、ダミーデータを一瞬で作れる
- ランダム抽出: INDEX関数やCHOOSE関数と組み合わせてリストからランダムに選べる
- 揮発性: 再計算のたびに値が変わるので、確定したら値貼り付けで固定する
- 使い分け: 整数ならRANDBETWEEN、小数ならRAND、一括生成ならRANDARRAY
くじ引きやテストデータ作成など、ランダムな整数が必要な場面でぜひ活用してみてください。
