スプレッドシートで日付を入力するとき、間違った日付を防ぎたい場面は多いです。たとえば、過去の日付だけ入力したい場合や、未来の日付だけ許可したい場合があります。この記事では、Googleスプレッドシートの入力規則機能を使って、過去日付や未来日付を制限する方法を解説します。具体的な設定手順と注意点を詳しく説明しますので、すぐに活用できます。
【要点】日付の入力規則で過去・未来を自在に制限する方法
- 「データ」メニュー→「入力規則」: セル範囲を選択し、条件を「日付」にすると過去・未来の制限が簡単に設定できます。
- カスタム数式 =A1>TODAY(): 未来日付のみ許可したい場合はこの数式を使います。現在の日付より後の日付だけを許可します。
- カスタム数式 =A1
過去日付のみ許可したい場合はこの数式を使います。今日より前の日付だけ入力できます。
ADVERTISEMENT
目次
日付の入力規則の基本と仕組み
Googleスプレッドシートの入力規則は、セルに入力できる値を制限する機能です。日付に対しては、特定の範囲内の日付だけ許可したり、今日の日付より前後を制限したりできます。設定には「条件を指定」という方法と「カスタム数式」を使う方法があります。前者はプリセットの条件から選ぶだけで、後者はより柔軟な制限をかけたいときに便利です。なお、この機能は新しいデータ入力の際にのみ有効で、既存のデータには影響しません。
プリセット条件で過去日付を制限する手順
過去日付を制限するには、まずプリセットの条件「日付が次の範囲内」を使う方法があります。ただし、過去日付だけを禁止するには「今日以降の日付のみ許可」に相当する設定が必要です。以下、手順をご説明します。
- 制限したいセル範囲を選択する
日付を入力する列やセルをドラッグして選択します。範囲は後から変更できます。 - 「データ」メニューから「入力規則」を開く
メニューバーから「データ」をクリックし、「入力規則」を選択します。右側に設定パネルが表示されます。 - 条件を「日付」に設定する
条件のドロップダウンから「日付」を選びます。すると、下に「有効な日付のみ許可」というオプションが表示されます。これをオンにすると、日付以外の入力は拒否されますが、過去・未来の制限はできません。 - 「日付が次の範囲内」を選択して範囲を指定する
条件を「日付が次の範囲内」に変更します。すると開始日と終了日を指定する項目が現れます。ここで、未来日付のみを許可したい場合、開始日に「=TODAY()」と入力し、終了日を空欄にするか、大きな未来日付(例「12/31/9999」)を指定します。 - 拒否メッセージを設定して保存する
「無効なデータが入力された場合」のセクションで「入力を拒否する」を選び、任意のメッセージ(例「過去の日付は入力できません」)を入力します。最後に「保存」をクリックします。
この方法では、「今日から未来の日付のみ許可」という設定が可能です。過去日付だけを許可したい場合は、開始日を空欄にして終了日に「=TODAY()」と指定すれば、今日以前の日付のみ許可されます。ただし、プリセットでは「今日より前」といった相対指定が直接できないため、後述のカスタム数式をおすすめします。
カスタム数式で過去日付・未来日付を自由に制限する手順
カスタム数式を使うと、より細かい条件を指定できます。たとえば「今日より後の日付のみ」「今日より前の日付のみ」「今日を含まない」といった設定が可能です。以下、未来日付のみ許可する場合の手順を説明します。
- セル範囲を選択し、入力規則を開く
手順は前節と同じです。選択範囲を決めたら「データ」→「入力規則」を開きます。 - 条件を「カスタム数式」に変更する
条件のドロップダウンから「カスタム数式」を選びます。テキストボックスが表示されます。 - 数式 =A1>TODAY() を入力する(未来日付許可の場合)
ここで、選択範囲の先頭セルを基準にした数式を入力します。たとえば、範囲がA2:A100なら、A2>TODAY() と書きます。この数式がTRUEになる日付だけが許可されます。TODAY()は今日の日付を返す関数です。つまり、今日より後の日付だけが許可されます。今日を含めたい場合は =A1>=TODAY() とします。 - 過去日付のみ許可する数式 =A1
同様に、過去日付のみを許可したい場合は =A1- 今日の日付を除外する場合
今日を許可したくないなら、等号を付けずに =A1>TODAY() または =A1=TODAY(), A1<=TODAY()+7) - 拒否メッセージを設定して保存する
任意のメッセージを入力し、「保存」をクリックします。設定した範囲に、条件を満たさない日付を入力しようとすると、拒否メッセージが表示されて入力できなくなります。 - 今日の日付を除外する場合
なお、カスタム数式を使う場合、数式内のセル参照は選択範囲の左上のセルを基準にします。スプレッドシートが自動的に範囲全体に適用してくれます。たとえば、範囲A2:A10に対して数式=A2>TODAY()と書けば、各セルでA2、A3…と相対的に評価されます。
ADVERTISEMENT
日付の入力規則の注意点とよくあるトラブル
日付の入力規則が効かないとき
入力規則が正しく設定されているのに、実際に入力できてしまう場合があります。原因として、セルの書式が「テキスト」になっていることが考えられます。日付をテキストとして入力すると、入力規則が適用されません。セルの書式を「日付」に変更する必要があります。もう一つの原因は、入力規則の範囲が間違っていることです。設定した範囲を確認してください。
TODAY関数が更新されない
TODAY()関数はファイルを開くたびに自動更新されますが、入力規則はその時点の値で評価されます。そのため、今日の日付が変わっても、後でファイルを開き直さないと条件が更新されないことはありません。実際には、シートを開くたびにTODAY()が再計算されるため、常に最新の日付で判定されます。
未来日付と過去日付の両方を許可したい場合
特定の過去日付(例: 先月分のデータ)と未来日付(例: 来月分の予定)だけ許可したい場合、OR関数を使います。たとえば、A1が今月1日以前か、来月1日以降のどちらかを許可するには、=OR(A1<=EOMONTH(TODAY(),-1), A1>=EOMONTH(TODAY(),0)+1) のような数式を書きます。
データの入力規則をコピーする方法
設定した入力規則を別のセル範囲にコピーしたい場合、対象のセルをコピーし、貼り付け先で「形式を選択して貼り付け」から「条件付き書式のみ貼り付け」を選ぶと、入力規則も一緒にコピーされます。ただし、数式中のセル参照は相対参照のままなので注意が必要です。
プリセット条件とカスタム数式の比較表
| 項目 | プリセット条件 | カスタム数式 |
|---|---|---|
| 過去日付のみ許可 | 「日付が次の範囲内」で終了日を=TODAY()に指定 | =A1 |
| 未来日付のみ許可 | 「日付が次の範囲内」で開始日を=TODAY()に指定 | =A1>TODAY() または =A1>=TODAY() |
| 今日を含むかどうか | 等号の有無で調整可能 | 数式の不等号で制御(>= や <=) |
| 複雑な条件(範囲指定など) | できない | AND/OR関数で柔軟に設定可能 |
| 他のセルを参照した条件 | できない | 別セルを数式内で参照できる |
カスタム数式の方が自由度が高いため、特別な要件がある場合はそちらを選びます。プリセット条件はシンプルな制限に適しています。
まとめ
この記事では、Googleスプレッドシートの入力規則を使って、過去日付や未来日付を制限する方法をご紹介しました。プリセット条件とカスタム数式の両方を説明しましたので、状況に応じて使い分けてください。特に、=A1>TODAY() や =A1 ADVERTISEMENT 超解決 第一編集部 疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
