ADVERTISEMENT

【Googleスプレッドシート】EDATE関数で月単位の日付加算!半年後・1年後の計算

【Googleスプレッドシート】EDATE関数で月単位の日付加算!半年後・1年後の計算
🛡️ 超解決

Googleスプレッドシートで請求書の支払期限や契約更新日を管理するとき、特定の月数後の日付を求めたい場面があるでしょう。単純に30日を足すと月末調整がうまくいかないことがありますが、EDATE関数なら月単位で正確に加算できます。この記事では、EDATE関数の基本的な使い方から半年後・1年後の計算、さらに応用的なテクニックまでを解説します。EDATE関数をマスターすれば、日付管理が格段に楽になります。

【要点】EDATE関数で月単位の日付加算をシンプルに実現

  • =EDATE(開始日, 月数) の構文: 開始日から指定した月数後の日付を返します。月数に正の数を指定すると未来、負の数で過去を計算します。
  • 半年後や1年後の計算: 月数に6や12を指定するだけです。例えば2024年1月31日の1年後は2025年1月31日と月末が自動調整されます。
  • 月末日の扱いとエラー対策: 開始日が月末の場合は自動的に月末日で調整されます。日付形式が正しくないとエラーになるため、シリアル値であることを確認してください。

ADVERTISEMENT

EDATE関数の仕組みと基本構文

EDATE関数は、指定した開始日から指定した月数だけ進んだ(または戻った)日付を返す関数です。内部では日付シリアル値に対して月単位の加減算を行い、うるう年や月の日数差を自動的に考慮します。例えば1月31日の1ヶ月後は2月28日(うるう年なら29日)になります。手動で日数を計算する必要は一切ありません。

基本構文は =EDATE(開始日, 月数) です。第1引数の開始日は日付シリアル値(DATE関数や日付文字列の入力など)で指定します。第2引数の月数は整数で指定します。正の数で未来、負の数で過去を表します。月数に0を指定すると開始日と同じ日付が返ります。

EDATE関数の基本的な使い方

最もシンプルな使い方から順に説明します。セルに日付が入力されていることを前提とします。

  1. 結果を表示するセルを選択する
    日付を表示したいセルをクリックして選択します。
  2. EDATE関数を入力する
    =EDATE( と入力し、開始日が入力されたセル(例:A2)、続いてカンマ、次に月数(例:3)を入力します。閉じ括弧で数式を完成させます。例:=EDATE(A2, 3)
  3. セルの書式を日付に設定する
    結果がシリアル値(数値)で表示される場合は、セルの書式を「日付」に変更します。「表示形式」メニューから「数字」→「日付」を選んでください。

これで3ヶ月後の日付が計算されます。月数を6にすれば半年後、12にすれば1年後です。負の数を使えば過去の日付も簡単に求められます。

半年後・1年後の計算

半年後は月数に6、1年後は12を指定します。例えば契約開始日が2024年7月15日なら、=EDATE(A2, 6) で2025年1月15日、=EDATE(A2, 12) で2025年7月15日が返ります。月を跨ぐ計算も問題なく動作します。

複数月の一括計算

月数をセル参照で指定すれば、複数の月数パターンを一括で計算できます。例えばB列に月数を入力しておき、=EDATE(A2, B2) とすれば、B列の値に応じて異なる月数後の日付をドラッグでコピーできます。支払いスケジュールや定期更新リストを作成する際に便利です。

EDATE関数の応用テクニック

月末日を維持した加算

EDATE関数は、開始日が月末(1月31日など)の場合、その月の月末日を自動調整します。例えば2024年1月31日の1ヶ月後は2024年2月29日(うるう年)、2月29日の1ヶ月後は2024年3月29日となります。もし「月末日は月末日で揃えたい」場合は、EOMONTH関数と組み合わせると良いでしょう。=EOMONTH(EDATE(A2, 1), 0) とすることで、1ヶ月後の月末日を取得できます。

開始日を他の関数から動的に指定する

開始日をTODAY関数やDATE関数で指定することも可能です。=EDATE(TODAY(), 6) とすれば今日から半年後、=EDATE(DATE(2024,1,1), 12) で2024年1月1日の1年後が計算できます。これにより、日付を固定せずに動的な更新が可能です。

条件付き書式と組み合わせて期限をハイライト

EDATE関数で計算した期限日を、条件付き書式で強調表示すると便利です。例えば「今日の日付が期限日を過ぎている」場合にセルを赤くするには、条件付き書式で「カスタム数式」を選び =A2<=TODAY() と設定します。期限管理がひと目で分かるようになります。

ADVERTISEMENT

よくある失敗と注意点

日付がシリアル値として認識されない

開始日が文字列として入力されていると、EDATE関数はエラーになります。文字列の日付はDATEVALUE関数でシリアル値に変換するか、DATE関数を使って日付を入力してください。セルの書式が「日付」になっていても、中身が文字列の場合は注意が必要です。

月数が整数でない場合

月数に小数を指定すると、小数点以下は切り捨てられます。例えば1.5ヶ月後を指定しても1ヶ月後として計算されます。半月単位が必要なら、別途日数で調整する必要があります。

エラー値「#VALUE!」が表示される

開始日または月数が不正な値の場合に発生します。開始日がシリアル値であるか、月数が数値であるかを確認してください。空のセルを参照すると「#VALUE!」エラーになります。

EDATEでは「営業日」は考慮されない

EDATE関数は単純に月数で加算するため、土日や祝日は考慮しません。営業日を加味したい場合は、WORKDAY関数やNETWORKDAYS関数を別途組み合わせる必要があります。

EDATE関数と類似関数の比較

関数名 機能 使用例
EDATE 月単位で日付を加減算 =EDATE(A2, 6) → 半年後
DATE 年・月・日を指定して日付を作成 =DATE(2025,1,15) → 2025/1/15
EOMONTH 月数後の月末日を返す =EOMONTH(A2, 1) → 1ヶ月後の月末
WORKDAY 指定した営業日後の日付を返す =WORKDAY(A2, 10) → 10営業日後

EDATEは月単位の加算に特化しており、日数の調整が必要ない点が最大の利点です。一方、DATE関数は年・月・日を個別に指定でき、EOMONTHは月末日を固定したい場合に便利です。シチュエーションに応じて使い分けましょう。

まとめ

EDATE関数を使えば、開始日から任意の月数後の日付を簡単に計算できます。半年後や1年後といった定期的な日付管理が格段に効率化されます。さらに、TODAY関数や条件付き書式と組み合わせることで、期限管理の自動化も実現できます。ぜひ実際のスプレッドシートでEDATE関数を試し、次はEOMONTH関数やWORKDAY関数にも挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。