テスト用のダミーデータを用意したいとき、「ランダムな日付が大量に欲しい」という場面は意外とよくあります。売上サンプル、勤怠データ、予約表のテスト——リアルな日付が並んでいると資料の説得力が一気に増します。
とはいえ、手で日付を打ち込むとどうしても不自然に連番になりがちで、件数が多いと時間もかかります。この記事のコピペ数式を使えば、そんな作業が数分で片付きます。基本から「平日だけ」「重複なし」といった条件付きまで、順番に見ていきましょう。
▲ Excel サンプル
基本:RANDBETWEEN関数でランダムな日付を作る
Excelの日付は、内部的には「1900年1月1日を1とした連番(シリアル値)」で管理されています。この仕組みを使えば、日付のランダム生成は驚くほど簡単です。開始日と終了日をシリアル値に変換し、その範囲でランダムな整数を返すだけです。
=RANDBETWEEN(DATE(2026,1,1), DATE(2026,12,31))
このままだと「46023」(=2026年のある日)のような数字が表示されるので、驚かなくて大丈夫です。セルの表示形式を「日付」に変えるだけで日付になります。
- 対象セルを選択
Ctrl + 1で「セルの書式設定」を開く- 「日付」を選ぶ(「短い日付」か「長い日付」で表記を選べます)→ OK
あとは数式を下方向にコピーすれば、必要な件数だけ一気に生成できます。
開始日・終了日をセル参照にすると便利
期間を頻繁に変えるなら、開始日と終了日をセルに入力しておくと管理が楽になります。
=RANDBETWEEN($B$1, $B$2)
B1に開始日、B2に終了日を入れておけば、数式を書き換えずに期間を調整できます。$で絶対参照にしておくのがポイントです。
応用①:平日(月〜金)のみをランダム生成する
勤怠データや営業日ベースのサンプルでは、「土日を除いた平日だけ」が欲しくなります。ここで役立つのが WORKDAY関数 です。基準日から指定した営業日数だけ進んだ日付を返し、土日を自動でスキップしてくれます。
=WORKDAY($B$1, RANDBETWEEN(0, 260))
これは「B1(開始日)から、0〜260営業日後のどこか」をランダムに返す数式です。260はおよそ1年間の営業日数なので、期間に合わせて調整してください。
なお、この数式は各セルが独立して乱数を返すため、平日でも同じ日付が重複することがあります。「平日かつ重複なし」を両立したい場合は、後述の重複なしの手法で候補を「平日だけ」に絞ってから抜き取ってください。
祝日も除外したい場合
WORKDAY関数は第3引数に「祝日リスト」を渡せます。祝日をどこかのセル範囲に入力しておき、こう書きます。
=WORKDAY($B$1, RANDBETWEEN(0, 260), $D$1:$D$20)
D列に祝日を並べておけば、土日+祝日を除いた「純粋な稼働日」だけがランダムに生成されます。
応用②:重複しないランダムな日付を作る
RANDBETWEENは各セルが独立して乱数を返すため、件数が多いと同じ日付が混ざります。「重複なし」を実現するには少し工夫が必要です。
方法A:連続する日付をシャッフルする
最も確実なのは、「候補の日付をすべて並べて、ランダムに並び替えて上から必要数を取る」方法です。原理的に重複が発生しません。
- A列に開始日から連続した日付を入力(オートフィルでOK)
- B列に
=RAND()を入力 - B列(乱数)を基準にデータ全体を並べ替え
- 上からN件を採用
RAND() は0〜1のランダムな小数を返すので、これを並べ替えキーにすればシャッフルできます。
方法B:Microsoft 365ならSORTBYで一発
最新のExcel(Microsoft 365)なら、スピル機能で一気に片付きます。
=SORTBY(SEQUENCE(30,1,DATE(2026,1,1)), RANDARRAY(30))
SEQUENCE(30,1,開始日)… 開始日から連続30日分を生成RANDARRAY(30)… 30個のランダム値SORTBY… 乱数順に並び替え
ここで注意点があります。この数式は「連続する30日」をシャッフルしているだけで、たとえば「1年間からランダムに30件」を選んでいるわけではありません。広い期間から重複なしで抜き取りたいときは、SEQUENCE の日数を期間分まで広げ(例:1年なら SEQUENCE(365,1,開始日))、SORTBY で並び替えたうえで上からN件だけ採用してください。ここを勘違いすると期間を広げられず詰まりがちなので、必ず候補日数を先に広げるのがコツです。
知っておきたい注意点:再計算で値が変わる
RANDBETWEENやRAND、RANDARRAYは 揮発性関数 と呼ばれ、シートを編集するたびに値が再計算されて変わってしまいます。生成した日付を固定したいときは、「値のみ貼り付け」に変換しましょう。
- 対象範囲をコピー(
Ctrl + C) - 同じ場所で右クリック →「値の貼り付け」
- または
Ctrl + Alt + V→ 「値」を選択
これで数式が消え、日付が固定されます。ダミーデータとして配布・保存する前には必ず実行しておきましょう。
まとめ:どれを使えばいい?
用途に応じて、次の判断基準で選べば迷いません。
- 少量を手早く作りたい →
RANDBETWEEN(開始日, 終了日)+日付の表示形式 - 営業日ベースで作りたい →
WORKDAYと組み合わせ(祝日リストも渡せる) - 重複NG・365あり →
SORTBY+RANDARRAY(候補日数は期間分まで広げる) - 重複NG・365なし → A列に連続日付+
RAND()で並べ替え - 仕上げ → 値貼り付けで固定して変動を防ぐ
用途に合わせて使い分ければ、リアルなテストデータがあっという間に用意できます。まずは基本の数式から、ぜひ試してみてください。
関連記事
- ExcelのVLOOKUPで"あいまい検索"!前方・後方・部分一致をワイルドカードで攻略
- Excelで同じ名前の「2件目以降」を取り出す方法【INDEX+MATCH+COUNTIF】
- Excelで一つ下のセルを参照する方法|数式でずれない書き方【実例つき】
- Excelで1行おき(奇数行・偶数行)を一発抽出する方法|FILTER関数で解決
- 【コピペOK】Excelで最終更新日・作成日を自動表示する2つの方法