• 作成日 : 2025年8月25日

RANDBETWEEN関数の使い方:エクセルで指定範囲の乱数を生成する方法

RANDBETWEEN関数は、指定した最小値と最大値の間でランダムな整数を生成するエクセルの乱数関数です。テストデータの作成、シミュレーション、ランダムサンプリング、ゲームやクイズの作成など、様々な場面で活用されています。本記事では、RANDBETWEEN関数の基本的な使い方から実務での応用例、RAND関数との使い分け、揮発性関数としての特性と対処法、重複しない乱数の生成方法、そしてよくある問題とその解決方法まで、初心者にも分かりやすく解説します。乱数生成のテクニックをマスターして、データ分析やシミュレーションの幅を広げましょう。

RANDBETWEEN関数の使い方

RANDBETWEEN関数とは

RANDBETWEEN関数は、指定した範囲内でランダムな整数を生成する関数です。この関数の最大の特徴は、生成される値が必ず整数であることと、最小値と最大値を含む範囲内で均等な確率で値が選ばれることです。たとえば、1から10の間で乱数を生成する場合、1と10も含めて、すべての整数が同じ確率で出現します。

この関数は揮発性関数と呼ばれ、ワークシートが再計算されるたびに新しい乱数が生成されます。F9キーを押したり、セルを編集したりするたびに値が変わるため、動的なデータ生成に適しています。

基本構文

RANDBETWEEN関数の構文はシンプルです。

=RANDBETWEEN(最小値, 最大値)

各引数について詳しく説明します。

最小値:生成される乱数の最小値を指定します。この値も生成される可能性があります。整数である必要はなく、小数を指定しても内部で整数に変換されます。

最大値:生成される乱数の最大値を指定します。この値も生成される可能性があります。最小値以上の値を指定する必要があります。

基本的な使用例

最も基本的な使用例から見ていきましょう。

=RANDBETWEEN(1, 10)    // 1から10までの整数をランダムに生成

=RANDBETWEEN(0, 100)   // 0から100までの整数をランダムに生成

=RANDBETWEEN(-5, 5)    // -5から5までの整数をランダムに生成

サイコロのシミュレーション:

=RANDBETWEEN(1, 6)     // 1から6の整数(サイコロの目)

コイントスのシミュレーション:

=IF(RANDBETWEEN(0, 1)=0, “表”, “裏”)

引数の自動変換

RANDBETWEEN関数は、小数値を指定しても自動的に整数に変換します。

=RANDBETWEEN(1.2, 9.8)  // 実際は RANDBETWEEN(1, 9) として動作

=RANDBETWEEN(2.7, 5.3)  // 実際は RANDBETWEEN(2, 5) として動作

この変換は切り捨てではなく、最小値は切り上げ、最大値は切り捨てで処理されます。

揮発性関数としての特性

RANDBETWEEN関数は、以下のタイミングで新しい値を生成します。

  1. F9キー(再計算)を押したとき
  2. 任意のセルに入力や編集を行ったとき
  3. ファイルを開いたとき
  4. 他の揮発性関数が更新されたとき

この特性を理解することが、RANDBETWEEN関数を効果的に使用するための鍵となります。

RANDBETWEEN関数の利用シーン

テストデータの生成

システム開発やデータベース設計で、大量のテストデータが必要な場合に活用します。

年齢データの生成(18歳から65歳):

=RANDBETWEEN(18, 65)

売上金額の生成(1万円から100万円、千円単位):

=RANDBETWEEN(10, 1000) * 1000

評価点数の生成(0から100点):

=RANDBETWEEN(0, 100)

架空の社員番号生成:

=”EMP” & TEXT(RANDBETWEEN(1000, 9999), “0000”)

アンケート・調査のシミュレーション

市場調査や顧客満足度調査のダミーデータ作成に使用します。

5段階評価のランダム生成:

=RANDBETWEEN(1, 5)

満足度調査の回答シミュレーション:

=CHOOSE(RANDBETWEEN(1, 5), “非常に不満”, “不満”, “普通”, “満足”, “非常に満足”)

Yes/No回答の生成(70%がYesの確率):

=IF(RANDBETWEEN(1, 100) <= 70, “Yes”, “No”)

ゲーム・クイズの作成

教育やトレーニング用のコンテンツ作成に活用できます。

数学の計算問題生成:

数値1:=RANDBETWEEN(1, 20)

数値2:=RANDBETWEEN(1, 20)

問題:=A1 & ” + ” & B1 & ” = ?”

ビンゴカードの数字生成:

B列:=RANDBETWEEN(1, 15)

I列:=RANDBETWEEN(16, 30)

N列:=RANDBETWEEN(31, 45)

G列:=RANDBETWEEN(46, 60)

O列:=RANDBETWEEN(61, 75)

モンテカルロシミュレーション

リスク分析や確率計算のシミュレーションに使用します。

プロジェクト期間の不確実性分析:

最短期間:10日

最長期間:30日

シミュレーション:=RANDBETWEEN(10, 30)

在庫シミュレーション(日次需要が50-150個):

=RANDBETWEEN(50, 150)

投資リターンのシミュレーション(-10%から+20%):

=RANDBETWEEN(-10, 20) / 100

ランダムサンプリング

データ分析で無作為抽出を行う際に活用します。

1000件のデータから100件をランダム抽出:

=RANDBETWEEN(1, 1000)

=IF(COUNTIF($A$1:A1, A2) > 0, “重複”, “選択”)

部署の割り当て(4部署にランダム配属):

=CHOOSE(RANDBETWEEN(1, 4), “営業部”, “総務部”, “開発部”, “経理部”)

RANDBETWEEN関数の応用・他関数との組み合わせ

RAND関数との使い分け

小数の乱数が必要な場合は、RAND関数と組み合わせます。

0から1の間の小数(2桁):

=ROUND(RAND(), 2)

指定範囲の小数乱数(10.0から20.0):

=10 + RAND() * 10

整数と小数の組み合わせ:

=RANDBETWEEN(1, 10) + RAND()

重複しない乱数の生成

ユニークな乱数列を生成する高度なテクニックです。

方法1:RANK関数を使用

A列:=RAND()

B列:=RANK(A1, $A$1:$A$10)

方法2:大きな範囲から生成して重複チェック

=IF(COUNTIF($A$1:A1, A2) > 0, “再生成必要”, A2)

条件付き乱数生成

特定の条件下でのみ乱数を生成します。

営業日のみの日付生成:

=WORKDAY(TODAY(), RANDBETWEEN(1, 20))

偏りのある確率分布:

=IF(RAND() < 0.8, RANDBETWEEN(1, 5), RANDBETWEEN(6, 10))

文字列のランダム生成

文字や記号をランダムに選択します。

ランダムな大文字アルファベット:

=CHAR (RANDBETWEEN(65, 90))

ランダムなパスワード生成(8文字):

=CHAR (RANDBETWEEN(65,90)) & CHAR (RANDBETWEEN(97,122)) &

RANDBETWEEN(0,9) & CHAR (RANDBETWEEN(65,90)) &

CHAR (RANDBETWEEN(97,122)) & RANDBETWEEN(0,9) &

CHAR (RANDBETWEEN(33,47)) & RANDBETWEEN(0,9)

動的な範囲設定

セル参照を使用して、乱数の範囲を動的に変更します。

最小値セル(A1):10

最大値セル(B1):50

=RANDBETWEEN(A1, B1)

条件による範囲の切り替え:

=RANDBETWEEN(IF(C1=”初級”, 1, IF(C1=”中級”, 10, 50)),

IF(C1=”初級”, 10, IF(C1=”中級”, 50, 100)))

RANDBETWEEN関数のよくあるエラーと対策

値の固定化

生成された乱数を固定したい場合の対処法です。

方法1:値として貼り付け

  1. 乱数を生成
  2. コピー(Ctrl+C)
  3. 形式を選択して貼り付け → 値

方法2:循環参照を利用(推奨しない)

=IF(A1=””, RANDBETWEEN(1,100), A1)

方法3:VBAまたは手動での固定

1) 対象セルを選択し、F2 で編集モードに入ったあと F9 を押す

➡︎ 数式がその場で計算されて「値」に置き換わる。

2) Enter で確定すると乱数が静的値として残る。

(※複数セルの場合はコピー → 値貼り付けが簡便)

#NUM!エラーの対処

最小値が最大値より大きい場合に発生します。

誤:=RANDBETWEEN(10, 5)   // エラー

正:=RANDBETWEEN(5, 10)   // 正常

エラー回避:

=IF(A1 <= B1, RANDBETWEEN(A1, B1), RANDBETWEEN(B1, A1))

パフォーマンスの問題

大量のRANDBETWEEN関数は再計算時に負荷がかかります。

対策1:自動計算をオフにする

ファイル → オプション → 数式 → 手動

対策2:必要な分だけ生成して値で保存

  1. 必要な数だけ生成
  2. 値として貼り付けて保存
  3. 元の数式は削除

予期しない再計算

意図しないタイミングでの値の変更を防ぐ方法です。

条件付き更新:

=IF(更新フラグ=”ON”, RANDBETWEEN(1,100), 既存値)

特定の操作でのみ更新:

VBAマクロで制御することを検討

分布の偏り

完全にランダムでも、短期的には偏りが生じることがあります。

大数の法則を考慮:

サンプル数を増やすことで、より均等な分布に近づく

分布の確認:

=COUNTIF(範囲, 値) で各値の出現回数を確認

小数の乱数が必要な場合

RANDBETWEEN関数は整数のみを生成するため、小数が必要な場合は工夫が必要です。

小数第1位までの乱数(0.0から10.0):

=RANDBETWEEN(0, 100) / 10

小数第2位までの乱数(0.00から1.00):

=RANDBETWEEN(0, 100) / 100

RANDBETWEEN関数で整数の乱数を生成

RANDBETWEEN関数は、指定した最小値と最大値の間でランダムな整数を生成できるExcelの乱数関数です。データ分析やアンケート、ゲーム設計、シミュレーションなどさまざまな用途で使用されます。最小値と最大値を含む範囲内で、均等な確率で整数が選ばれるため、ランダムサンプリングや擬似実験にも対応できます。

この関数は揮発性であり、F9キーやセル編集など再計算のたびに新しい値を生成するため、値を固定したい場合はコピー&値貼り付けなどの処理が適しています。

RAND関数との組み合わせで小数の乱数も生成可能で、IF・CHOOSE・CHAR関数と連携すれば、条件付きの出力やランダムな文字列生成にも活用できます。

重複の回避や計算負荷への配慮を行えば、さまざまなシナリオで柔軟に利用できる関数です。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事