「Excelでランダムな数値を出したいんだけど、どうすればいいんだろう?」
抽選やテストデータの作成など、ランダムな値がほしい場面は意外とありますよね。そんなときに活躍するのがRAND関数です。
この記事では、RAND関数の基本から応用まで解説します。ランダムな整数の作り方やリストからの抽出テクニックなど、実務パターンをまとめました。
RAND関数とは?
RAND関数(読み方: ランド)は、0以上1未満のランダムな小数を返す関数です。
名前の由来は「Random(ランダム)」の略で、実行するたびに異なる値を返します。
たとえば =RAND() と入力すると、0.384752... のような値が表示されます。ワークシートを再計算するたびに値が変わるのが特徴です。
NOTE
RAND関数が返す値の範囲は 0以上1未満(0 <= 値 < 1)です。0が出ることはありますが、ちょうど1になることはありません。
RAND関数の書き方(構文と引数)
基本構文
=RAND()
RAND関数には引数がありません。ただし、カッコ () は必ず記述する必要があります。
引数の説明
| 項目 | 内容 |
|---|---|
| 引数 | なし(カッコのみ) |
| 戻り値 | 0以上1未満のランダムな実数 |
| 対応バージョン | 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))+下限
たとえば、50〜100のランダムな整数がほしいなら =INT(RAND()*51)+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をランダムに決めています。
パターン2: ランダムに並べ替える(シャッフル)
データをランダムな順番に並べ替えたいときは、RAND関数を「並べ替えキー」として使います。
- データの隣の列に
=RAND()を入力して下までコピー - RAND列を基準にデータ全体を並べ替え(昇順でも降順でもOK)
- 並べ替え完了後、RAND列を削除
RANK関数と組み合わせれば、ランダムな順位を付けることもできます。
=RANK(B2,B$2:B$11)
B列にRAND関数の値が入っていれば、この数式でランダムな順位が得られます。
パターン3: 2択・3択をランダムに振り分ける
IF関数と組み合わせると、ランダムな振り分けができます。
2択の場合(GO / STOP):
=IF(RAND()<0.5,"GO","STOP")
3択の場合(A / B / C):
=IF(RAND()<0.33,"A",IF(RAND()<0.66,"B","C"))
アンケート配布グループの振り分けや、テストデータの生成に便利です。
パターン4: ランダムな日付を生成する
テストデータとして特定期間内のランダムな日付を作りたいときに使えます。
=INT(RAND()*(DATE(2026,12,31)-DATE(2026,1,1)+1))+DATE(2026,1,1)
セルの表示形式を「日付」に変更すると、2026年1月1日〜12月31日のランダムな日付が表示されます。
RAND関数の注意点(揮発性関数)
RAND関数を使うときに必ず知っておいてほしいのが、揮発性関数という特性です。
揮発性関数とは?
揮発性関数とは、再計算のたびに自動で値が更新される関数のことです。RAND関数はこの揮発性関数に該当します。
以下の操作をするだけで、RAND関数の値は勝手に変わります。
| 操作 | 値が変わるか |
|---|---|
| 任意のセルを編集してEnter | 変わる |
| F9キーを押す | 変わる |
| ブックを開き直す | 変わる |
| 別のセルに数式を入力する | 変わる |
| セルの書式だけ変更する | 変わらない |
「せっかく良い値が出たのに、別の作業をしたら変わってしまった…」ということが起こり得るので注意が必要です。
値を固定する方法(値貼り付け)
RAND関数の結果を固定したいときは、値貼り付けを使います。
- RAND関数が入ったセル範囲を選択してコピー(Ctrl+C)
- 同じ範囲を選択した状態で Ctrl+Shift+V(または右クリック → 「値」貼り付け)
- 数式が消えて、コピー時点の数値だけが残る
これで再計算しても値は変わらなくなります。抽選結果を確定させたいときなどに使ってください。
NOTE
揮発性関数が多数あるとワークシートの再計算に時間がかかることがあります。大量のRAND関数を使う場合は、計算完了後に値貼り付けで固定するのがおすすめです。
RANDBETWEENとの違い・使い分け
RAND関数と似た関数にRANDBETWEEN関数があります。どちらもランダムな値を返しますが、用途が違います。
| 比較項目 | RAND | RANDBETWEEN |
|---|---|---|
| 構文 | =RAND() | =RANDBETWEEN(下限,上限) |
| 引数 | なし | 下限・上限の2つ |
| 戻り値 | 0以上1未満の小数 | 指定範囲の整数 |
| 主な用途 | 確率計算、他関数との組み合わせ | 手軽に整数の乱数を取得 |
| 揮発性 | あり | あり |
使い分けのポイント:
- 整数の乱数がほしいだけ → RANDBETWEEN関数がシンプルでおすすめ
- 小数の乱数が必要 → RAND関数を使う
- 確率で分岐したい(IF関数との組み合わせ等) → RAND関数を使う
- 他の関数と組み合わせて柔軟に使いたい → RAND関数を使う
迷ったら「整数ならRANDBETWEEN、それ以外はRAND」と覚えておけばOKです。
よくあるエラーと対処法
RAND関数自体はシンプルなのでエラーが出ることは少ないですが、組み合わせて使うときに注意が必要です。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 値が勝手に変わる | 揮発性関数の仕様 | 値貼り付け(Ctrl+Shift+V)で固定する |
#VALUE! エラー | RAND関数の結果を文字列として処理しようとした | 数値として扱っているか確認する |
| 同じ値が何度も出る | ランダムなので偶然の重複は起こり得る | 気にしなくてOK。重複を避けたい場合はRAND+RANKの組み合わせを使う |
=RAND で数値が出ない | カッコ () の付け忘れ | =RAND() とカッコを付ける |
| 小数点以下の桁数が多すぎる | RAND関数の仕様(15桁程度の小数を返す) | ROUND関数で桁数を丸める |
まとめ
RAND関数は0以上1未満のランダムな小数を返すシンプルな関数です。この記事で紹介した内容をおさらいしましょう。
- 基本:
=RAND()で0〜1の乱数を生成(引数なし) - 整数化:
=INT(RAND()*(上限-下限+1))+下限でランダムな整数を作れる - 実務活用: リストからのランダム抽出、シャッフル、グループ振り分けに使える
- 揮発性関数: 再計算のたびに値が変わるので、確定したら値貼り付けで固定する
- 使い分け: 整数だけならRANDBETWEEN、柔軟に使うならRAND
ランダムな値が必要な場面は意外と多いので、RAND関数の使い方をマスターしておくと作業の幅が広がりますよ。
