【Excel】エクセルで「ランダムな数値」を作る!RAND/RANDBETWEEN関数の基本

【Excel】エクセルで「ランダムな数値」を作る!RAND/RANDBETWEEN関数の基本
🛡️ 超解決

テスト用の点数やランダムな並び順を作るなら、ExcelのRANDとRANDBETWEENを使えます。RANDは0以上1未満の数、RANDBETWEENは指定範囲の整数を返します。どちらも再計算で値が変わるため、採用する結果が決まったら値として固定するのが大事です。

一方、同じ数字が出ないことや、運用まで含めた抽選の公平さを関数だけで保証することはできません。乱数の範囲、重複の可否、結果を確定する時点を先に決めましょう。Windows版Excelを例に、生成から固定、名簿の並べ替えまで説明します。


ADVERTISEMENT

1. 小数が必要ならRAND、整数ならRANDBETWEEN

=RAND() は、0以上1未満の範囲から数を返します。引数はなく、かっこの中は空です。0は範囲に含まれますが1は含まれません。ただし表示形式で小数桁を減らすと、1に近い値が丸められて「1.00」と見えることがあります。実際の値は数式バーや表示桁を増やして確認します。

=RANDBETWEEN(1,6) は、1から6までの整数を返します。両端の1と6も含みます。テスト用の100点満点の点数なら =RANDBETWEEN(0,100) のようにします。0点を含めないなら下限を1へ変えます。

小数の範囲を変えるなら、たとえば =RAND()*10+20 で20以上30未満を作れます。整数の20から30までならRANDBETWEEN(20,30)です。RANDを単に丸めて整数にする方法は端の値の出方が均等にならない場合があるため、整数が必要なら最初から整数用の関数を使う方が分かりやすくなります。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 必要な件数を作り、範囲と型を確認する

  1. 空いている列の先頭に「テスト点数」と見出しを入れます。
  2. A2へ =RANDBETWEEN(0,100) を入力します。
  3. A2をA11までコピーし、10件の結果を作ります。
  4. 別セルで =MIN(A2:A11) と =MAX(A2:A11) を確認します。
  5. どの値も0から100の範囲内にあることを見てから、用途に合わせて固定します。

10件だけでは、0と100が必ず含まれるわけではありません。同じ点数が複数あっても、関数の誤動作ではありません。乱数で作ったテストには端の値が出ない場合があるので、システムの入力限界を確認する用途なら、0、100、未入力などの境界例を別に追加します。

上限や下限をセルに置く場合は、たとえばD2を0、E2を100として =RANDBETWEEN($D$2,$E$2) とします。コピー後も境界の参照が動かないよう固定します。下限が上限を超えているときや文字が入っているときは、生成結果を調べる前に入力条件を修正してください。

3. 再計算で変わる結果を値として固定する

RANDとRANDBETWEENは、ワークシートが再計算されると新しい値を返します。自動計算の状態では、ほかのセルへの入力がきっかけになることもあります。見ていた結果が変わったこと自体はバグではありません。抽選結果や提出用のテストデータに使うなら、数式を残すか固定するかを決めます。

  1. 採用する乱数の範囲を選び、Ctrl+Cでコピーします。
  2. 同じ場所で[貼り付け]の[値]を選びます。
  3. 数式バーにRANDやRANDBETWEENではなく数値が入っていることを確認します。
  4. 別セルを編集するなどして再計算し、固定した範囲が変わらないことを確認します。

通常の貼り付けでは数式が残るので、固定できていません。表示を小数2桁に変える操作も、乱数を固定する操作ではありません。使った式と上下限は見出しや別セルに残し、確定した数値と区別します。

固定を誤った直後ならCtrl+Zで数式へ戻せますが、再計算すれば前と同じ乱数が再現されるとは限りません。採用済みの結果を再現するには、式だけでなく固定した値そのものを保存してください。

4. F9で試し直すときは確定前か後かを意識する

数式の編集を終えた通常のセル選択状態でF9を押すと、再計算が行われ、乱数も更新されます。練習用のデータを何組か作って挙動を見るときに使えます。数式バーで編集中にF9を押す操作は、式や選択部分を計算値へ変える用途にも使われるため、同じキーでも状態を区別します。

乱数が変わらないときは、値へ固定済みではないか、数式バーに式があるか、計算設定がどうなっているかを確認します。手動計算にすれば当面変化を抑えられますが、別の計算も更新されなくなるため、結果の保存方法として使わない方が管理しやすくなります。

抽選に使うなら、何回目を採用するか、欠席者がいた場合にどうするかを実施前に決めます。望む当選者が出るまでF9を押せる運用では、関数がランダムな数を返しても手続きの公平さを説明できません。採用した結果、対象者、実施時点を保存し、やり直す場合も理由を記録します。

5. 重複しない並び順は名簿全体を並べ替えて作る

RANDBETWEEN(1,10)を10セルへ入れても、1から10を重複なく1回ずつ並べる機能にはなりません。参加者を一度ずつ登場させたいなら、参加者IDと名前の一覧にRANDの列を付け、行ごと並べ替える方法があります。名簿に同じ参加者が二重登録されていないことが前提です。

  1. A列を参加者ID、B列を名前、C列を乱数とし、参加者1人につき1行にします。
  2. C2へ =RAND() を入力し、名簿の最終行までコピーします。
  3. C列の乱数を値貼り付けで固定します。
  4. 実際の値に同値がないか確認します。たとえばD2に =COUNTIF($C$2:$C$4,C2) を入れて3人分へコピーすると、同値の件数を調べられます。
  5. ID・名前・乱数の表全体を選び、[データ]→[並べ替え]で乱数を昇順にします。

3人の固定値が佐藤0.72、鈴木0.15、高橋0.48なら、鈴木、高橋、佐藤の順です。乱数列だけを並べ替えると名前との対応が切れます。選択範囲の拡張を尋ねられた場合は、参加者の全列を含めることを確認してください。

RANDも同値が絶対に出ないとは保証されません。表示桁だけ同じなのか実際の値も同じなのかを区別し、同値時は対象者間だけで再抽選するなどの規則を先に決めます。RANKで順位を付けても同値には同順位が付くため、それだけで一意な連番を保証する方法にはなりません。

固定乱数0.72の佐藤、0.15の鈴木、0.48の高橋を、IDと名前ごと昇順に並べ替え、鈴木、高橋、佐藤の順にする例
並べ替えるのは乱数列だけでなく名簿の行全体です。図の数値は固定後の例で、実行ごとに値は変わります。

6. 結果と元の順序を保存してから利用する

並べ替え前に参加者IDや元の順序を表す列を残しておくと、後から元の並びへ戻せます。直後ならCtrl+Zで戻せますが、保存し直した後は元順序の列で並べ替えるか、保存しておいた名簿のコピーを使います。名前だけでは同姓同名を区別できないので、IDを一緒に残します。

テストデータを配布する場合は、乱数の範囲、件数、採用した値を記録します。式を保存しただけでは次回の再計算で値が変わり、同じ不具合を再現できないことがあります。固定済みのデータと、作り直すための数式版を分けて管理してください。

乱数の使用後は、対象人数と行数、名前とIDの対応、上下限、固定状態を確認します。少ない試行で出目の回数が均等になる必要はありませんし、同じ数字が続くこともあります。数値を作る機能と、その結果をどのルールで採用するかを分けておくと、テストや順番決めの経緯を説明しやすくなります。

担当者へ渡すのは当選番号だけでなく、対象名簿と採用済みの順序が分かる表にします。修正があった場合は元の結果を上書きせず、変更理由と新しい版を残すと、どの結果で実施したかを確認できます。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】