「Excelでランダムな数値を出したいんだけど、どうすればいいんだろう?」
抽選や名簿からの無作為抽出、テストデータの作成など、ランダムな値がほしい場面は意外と多いですよね。そんなときに活躍するのがRAND関数です。
この記事では、RAND関数の基本構文から、ランダム整数の作り方、リストからの抽出(重複あり・なし両対応)、シャッフル、値の固定方法まで、実務で使えるパターンを一通り解説します。RANDBETWEEN・RANDARRAYとの違いや、揮発性関数の注意点もまとめましたので、最後まで読めばRAND関数まわりで迷うことはなくなりますよ。
RAND関数とは?
RAND関数(読み方: ランド)は、0以上1未満のランダムな小数を返す関数です。
名前の由来は「Random(ランダム)」の略で、再計算するたびに新しい値を返します。たとえば =RAND() と入力すると、0.384752... のような値が表示され、何か別のセルを編集するだけでも値が変わります。
NOTE
RAND関数が返す値の範囲は 0以上1未満(0 ≤ 値 < 1)です。0が出ることはありますが、ちょうど1になることはありません。Excel公式仕様では「0以上1未満の一様分布実数の乱数」と定義されています。
RAND関数の書き方(構文と引数)
基本構文
=RAND()
RAND関数には引数がありません。ただし、カッコ () は必ず記述する必要があります。=RAND とカッコなしで入力すると #NAME? エラーになるので注意してください。
引数の説明
| 項目 | 内容 |
|---|---|
| 引数 | なし(カッコのみ) |
| 戻り値 | 0以上1未満のランダムな実数(小数点以下約15桁) |
| 対応バージョン | Excel 2003以降すべて / Microsoft 365 / Googleスプレッドシート |
| 揮発性 | あり(再計算のたびに値が変わる) |
引数がないので入力はとてもシンプルです。=RAND() と入力してEnterを押すだけでランダムな小数が表示されます。
RAND関数の基本的な使い方
0〜1のランダムな小数を生成する
もっとも基本的な使い方です。任意のセルに以下の数式を入力します。
=RAND()
Enterを押すと、0.629481... のようなランダムな小数が表示されます。
数式バーを見ると =RAND() のままなのがポイント。表示されている数値は「今の計算結果」で、再計算のたびに変わります。
ランダムな整数を生成する
実務では小数よりも整数がほしい場面の方が多いですよね。RAND関数とINT関数を組み合わせて、指定した範囲のランダムな整数を作りましょう。
=INT(RAND()*10)+1
この数式は1〜10のランダムな整数を返します。仕組みを分解してみましょう。
| ステップ | 処理内容 | 値の例 |
|---|---|---|
RAND() | 0以上1未満の小数を生成 | 0.7382… |
RAND()*10 | 0以上10未満に拡大 | 7.382… |
INT(RAND()*10) | 小数を切り捨てて整数化 | 7 |
INT(RAND()*10)+1 | 1を足して1〜10の範囲にする | 8 |
任意の範囲に対応する一般式はこちらです。
=INT(RAND()*(上限-下限+1))+下限
代表的なパターンを表にまとめておきます。
| ほしい範囲 | 数式 |
|---|---|
| 1〜10 | =INT(RAND()*10)+1 |
| 1〜100 | =INT(RAND()*100)+1 |
| 0〜99 | =INT(RAND()*100) |
| 50〜100 | =INT(RAND()*51)+50 |
| -50〜50 | =INT(RAND()*101)-50 |
TIP
整数の乱数を作るだけなら、RANDBETWEEN関数を使う方がシンプルです。
=RANDBETWEEN(1,10)と書くだけでOK。RAND関数を使うのは、小数の乱数が必要なときや、他の関数と組み合わせて柔軟にカスタマイズしたいときに向いています。
RAND関数の実践的な使い方・応用例
パターン1: リストからランダムに1件抽出する
名簿や商品リストから1件だけランダムに選びたいときに使うパターンです。
A列にデータが10件(A2:A11)入っているとします。
=INDEX(A2:A11,INT(RAND()*10)+1)
INDEX関数がリストの「n番目」を取り出す仕組みです。INT(RAND()*10)+1 でそのnをランダムに決めています。データ件数が変わる場合は 10 の部分を COUNTA(A2:A11) などに置き換えると汎用化できます。
CHOOSE関数を使ったパターンもあります。
=CHOOSE(INT(RAND()*3)+1,"赤","青","緑")
「赤・青・緑」の3択からランダムに1つ選ぶ式です。選択肢が固定で少数なら、こちらの方が直感的に書けます。
パターン2: 重複なしでN件をランダム抽出する
抽選で「100人から5人を重複なしで選びたい」というケース。実務でいちばん多いパターンですが、RAND関数単体ではできないので、RANK関数と組み合わせます。
手順:
- B列に
=RAND()を入力して、データの行数だけ下にコピー(例: B2:B101) - C列に
=RANK(B2,$B$2:$B$101)を入力して下にコピー → 1〜100の重複しない順位が得られる - C列が1〜5のデータが「ランダムに選ばれた5人」になる
RANK関数はランダム値を順位化することで、重複のない1〜Nの整数列を作ります。RAND関数の精度は約15桁なので、同じ値が偶然出る確率は実質ゼロ。安心して抽選に使えます。
Microsoft 365 / Excel 2021 以降なら、RANDARRAY関数とSORTBY関数を組み合わせる方法もスマートです。
=SORTBY(A2:A101,RANDARRAY(100))
これでA列の100件がランダム順に並び、上から5行が「ランダム抽選の5人」になります。スピル対応関数なので、1つの数式で結果が全行に展開されるのが便利です。
パターン3: ランダムに並べ替える(シャッフル)
データの順番をシャッフルしたいときも、RAND関数を「並べ替えキー」として使います。
- データの隣の列に
=RAND()を入力して下までコピー - RAND列を基準にデータ全体を並べ替え(昇順でも降順でもOK)
- 並べ替え完了後、不要になったRAND列を削除
ボードゲームのカード順を決めたい、研修の発表順をランダムにしたいといった場面で使えます。
パターン4: 2択・3択をランダムに振り分ける
IF関数と組み合わせると、ランダムな振り分けができます。
2択の場合(GO / STOP):
=IF(RAND()<0.5,"GO","STOP")
3択の場合(A / B / C):
=CHOOSE(INT(RAND()*3)+1,"A","B","C")
3択以上はIF関数をネストするよりもCHOOSE関数と組み合わせる方が読みやすくなります。アンケート配布グループの振り分けや、A/Bテストの対象選定に便利ですよ。
パターン5: ランダムな日付・時刻を生成する
テストデータとして特定期間内のランダムな日付を作りたいときに使えます。
日付のみ(2026年内):
=INT(RAND()*(DATE(2026,12,31)-DATE(2026,1,1)+1))+DATE(2026,1,1)
セルの表示形式を「日付」に変更すると、2026年1月1日〜12月31日のランダムな日付が表示されます。
日付+時刻(2026年内の任意の瞬間):
=DATE(2026,1,1)+RAND()*(DATE(2026,12,31)-DATE(2026,1,1)+1)
表示形式を「yyyy/m/d h:mm」などに設定すれば、ログデータのテストにも使えるリアルなタイムスタンプを生成できます。
RAND関数の注意点(揮発性関数)
RAND関数を使うときに必ず知っておいてほしいのが、揮発性関数(Volatile Function)という特性です。
揮発性関数とは?
揮発性関数とは、ワークブック内で何らかの再計算が発生するたびに必ず再計算される関数のことです。RAND関数のほか、RANDBETWEEN・NOW・TODAY・INDIRECT・OFFSET・CELL・INFOも揮発性関数に分類されます。
「どんな操作で値が変わるのか」を表にまとめました。
| 操作 | 値が変わるか |
|---|---|
| 任意のセルを編集してEnter | 変わる |
| F9キーを押す | 変わる |
| Shift+F9(アクティブシートのみ再計算) | 変わる |
| ブックを開き直す | 変わる |
| 別のセルに数式を入力する | 変わる |
| 行・列を挿入/削除する | 変わる |
| セルの書式だけ変更する | 変わらない |
| セルの塗りつぶしを変えるだけ | 変わらない |
「せっかく良い値が出たのに、別の作業をしたら変わってしまった…」ということが起こり得るので、抽選結果として確定させたいときは次の値固定の手順を必ず実行してください。
値を固定する方法(値貼り付け)
RAND関数の結果を固定したいときは、Microsoft公式でも案内されている値貼り付けを使います。
- RAND関数が入ったセル範囲を選択 → Ctrl+C でコピー
- 同じ範囲を選択した状態で Ctrl+Shift+V → 「値」を選んで貼り付け(または右クリック →「値」貼り付け)
- 数式が消えて、コピー時点の数値だけが残る
これで再計算しても値は変わらなくなります。抽選結果を確定させたい、テストデータとして固定したいといった場面で使ってください。
WARNING
揮発性関数が多数あるとワークシートの再計算に時間がかかります。Microsoftの公式ガイドでも、大量の揮発性関数はパフォーマンス低下の原因として挙げられています。何百セルもRAND関数を使う場合は、生成完了後に必ず値貼り付けで固定するのがおすすめです。
RANDBETWEEN・RANDARRAYとの違い・使い分け
ExcelのRAND系関数は3つあります。それぞれの特性を整理しておきましょう。
| 比較項目 | RAND | RANDBETWEEN | RANDARRAY |
|---|---|---|---|
| 構文 | =RAND() | =RANDBETWEEN(下限,上限) | =RANDARRAY([行],[列],[最小],[最大],[整数]) |
| 引数 | なし | 下限・上限の2つ | 最大5つ(すべて省略可) |
| 戻り値 | 0以上1未満の小数 | 指定範囲の整数(両端含む) | 配列(複数セル一括) |
| 主な用途 | 確率計算、他関数との組み合わせ | 手軽に整数の乱数を取得 | 大量の乱数を一括生成 |
| スピル対応 | なし | なし | あり |
| 対応バージョン | Excel 2003以降 | Excel 2007以降 | Microsoft 365 / Excel 2021以降 |
| 揮発性 | あり | あり | あり |
使い分けの目安:
- 整数の乱数がほしいだけ → RANDBETWEEN関数がシンプルでおすすめ
- 小数の乱数が必要 → RAND関数を使う
- 確率で分岐したい(IF関数との組み合わせ等) → RAND関数を使う
- 複数セルに一括で乱数を入れたい → RANDARRAY関数(Microsoft 365なら最優先)
- 重複なしでランダム抽出したい → RAND+RANK または SORTBY+RANDARRAY
迷ったら「整数だけならRANDBETWEEN、配列が必要ならRANDARRAY、それ以外はRAND」と覚えておけばOKです。
よくあるエラーと対処法
RAND関数自体はシンプルなのでエラーが出ることは少ないですが、組み合わせて使うときに注意が必要です。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 値が勝手に変わる | 揮発性関数の仕様 | 値貼り付け(Ctrl+Shift+V → V)で固定する |
#NAME? エラー | カッコ () を付け忘れている | =RAND() と必ずカッコまで記述する |
#VALUE! エラー | RAND関数の結果を文字列として処理した | 数値として扱っているか確認する |
| 同じ値が並ぶ | 整数化で範囲を狭めすぎ(小数のままなら実質ゼロ確率) | INT(RAND()*N) のNを大きくする・RANDBETWEENの範囲を広げる |
| 小数点以下の桁数が多すぎる | RAND関数の仕様(約15桁の小数) | ROUND関数で桁数を丸める |
RANDBETWEENで #NUM! エラー | 下限 > 上限になっている | 引数の順序を見直す |
よくある質問(FAQ)
Q1. RAND関数の値を一度だけ生成して固定したい
A. 値貼り付け(Ctrl+C → Ctrl+Shift+V → V)で数式を静的な値に変換するのが標準的な手順です。マクロ(VBA)が使える環境なら、生成後に Range.Value = Range.Value で自己代入する方法もあります。
Q2. RAND関数で本当に偏りのない乱数が得られる?
A. RAND関数が返すのは「擬似乱数」ですが、Excel 2010以降はMersenne Twister系のアルゴリズムが採用されており、業務用途の抽選やテストデータ生成では十分な品質です。暗号用途やシミュレーション研究には不向きなので、その場合は専用ライブラリを使ってください。
Q3. ランダム抽選で「同じ人が2回当たる」のを防ぎたい
A. 本記事の「パターン2: 重複なしでN件をランダム抽出する」で紹介した RAND+RANK または SORTBY+RANDARRAY の組み合わせを使ってください。RANK関数で順位化することで、重複のない1〜Nの整数列が得られます。
Q4. F9を押しても値が変わらない
A. ファイル → オプション → 数式 → 計算方法が「手動」になっている可能性があります。「自動」に変更するか、Ctrl+Alt+F9で強制的に完全再計算してみてください。
Q5. 大量のRAND関数でファイルが重い
A. 揮発性関数はワークシートの再計算が走るたびに毎回再計算されるため、数千セル単位で使うと体感速度が落ちます。生成完了後はすぐに値貼り付けで固定するか、計算方法を「手動」に切り替えて運用してください。
まとめ
RAND関数は0以上1未満のランダムな小数を返すシンプルな関数ですが、組み合わせ次第で実務の幅広い場面に対応できます。この記事の要点をおさらいしましょう。
- 基本:
=RAND()で0〜1の乱数を生成(引数なし、カッコは必須) - 整数化:
=INT(RAND()*(上限-下限+1))+下限でランダムな整数を作れる - リスト抽出: INDEX関数と組み合わせて1件抽出、RANK関数で重複なしN件抽出
- シャッフル: RAND列を作って並べ替え後に削除
- 揮発性関数: 再計算のたびに値が変わるので、確定したら値貼り付けで固定
- 使い分け: 整数だけならRANDBETWEEN、配列ならRANDARRAY、柔軟に使うならRAND
ランダムな値が必要な場面は意外と多いので、RAND関数の使い方をマスターしておくと作業の幅が広がりますよ。特に「重複なしランダム抽出」は抽選イベントで重宝するので、ぜひ覚えておいてください。