• 作成日 : 2025年8月5日

ExcelのEDATE関数の使い方!月単位の日付計算の自動化、応用例まで解説

EDATE関数(イー・デート関数)は、指定した開始日から、月単位で前後にずらした日付を正確に返す関数です。「3か月後の満了日」や「6か月前の契約開始日」などもあっという間に求められます。

本記事では、Excel初心者でも安心して使えるように、EDATE関数の基本から応用テクニックまでをわかりやすく解説します。これまで手動で日付を計算していた方も、EDATE関数をマスターすれば、作業効率が飛躍的に向上し、ミスの軽減にもつながるでしょう。

EDATE関数とは?

EDATE関数は、Excelが提供する日付と時刻に関する関数の一つで、指定した日付から指定された月数だけ前または後の日付を計算するために用いられます。「今日から3ヶ月後の日付」や「ある契約日の6ヶ月前の日付」といった、月単位での日付の加算・減算を簡単に行えます。

この関数の大きな特徴は、月の日数の違いを考慮し、月末日を適切に処理してくれる点にあります。EDATE関数は、開始日の「日」を基準として月数を加算しますが、その月で開始日の「日」が存在しない場合、自動的にその月の最終日に調整します。

たとえば、1月31日から1ヶ月後を計算する場合、2月31日は存在しないため、EDATE関数は2月の最終日である2月28日(またはうるう年の2月29日)を返してくれます。

これにより、日付計算における細かな調整の手間を省き、正確な日付を導き出すことが可能になります。

EDATE関数の構文

EDATE関数は、以下のシンプルな構文で使用します。

=EDATE(開始日, 月数)
  • 開始日: 計算の基準となる日付を必ず指定します。セル参照(例: A1)や、日付を示す文字列(例: “2025/1/1″)を直接入力できます。日付を文字列で入力すると、エラーが出ることがあるため注意が必要です。DATE関数やTODAY関数など、日付を返す関数も引数として使えます。
  • 月数: 開始日から数えて、何ヶ月後(または何ヶ月前)の日付を計算したいかを必ず指定します。
    • 正の数(例: 3)を指定すると、開始日より後の日付を計算します。
    • 負の数(例: -6)を指定すると、開始日より前の日付を計算します。
    • 0を指定すると、開始日と同じ日付を返します。

EDATE関数の戻り値(表示形式)

EDATE関数は、計算結果をシリアル値で返します。シリアル値とは、Excelが日付を内部的に管理するために使用している数値のことで、1900年1月1日を「1」として、そこから経過した日数を表します。

そのため、EDATE関数を使ったセルの書式設定が「標準」になっていると、「45678」のような数値が表示されてしまい、一見すると日付だとわかりません。この場合は、表示形式を「日付」に変更する必要があります。

表示形式の変更方法
  1. EDATE関数を入力したセルを選択します。
  2. ホームタブの「数値」グループにある、ドロップダウンリストから「短い日付形式」または「長い日付形式」を選択します。
  3. より詳細な設定を行いたい場合は、「その他の表示形式」を選択し、「セルの書式設定」ダイアログボックスから「日付」タブを選び、目的の形式を選択します。

EDATE関数とEOMONTH関数の違い

EDATE関数とよく似た関数に、EOMONTH関数があります。EOMONTH関数は、指定した日付から指定された月数だけ前または後の月の最終日を返します。

  • EDATE関数: 指定月の、開始日と同じ日の日付を返す(月末処理は考慮)。
  • EOMONTH関数: 指定月の、最終日を返す。

たとえば、2025年1月15日から1ヶ月後を計算する場合、

  • =EDATE(“2025/1/15”, 1) は 2025/2/15 を返します。
  • =EOMONTH(“2025/1/15”, 1) は 2025/2/28 を返します。

どちらの関数も月単位の日付計算に役立ちますが、用途に応じて使い分けることが重要です。

EDATE関数の具体的な使い方

ここでは、EDATE関数を実際にExcelで使うための具体的な手順を、例を交えながら詳しく解説します。

基本的な計算例

例1:今日から3ヶ月後の日付を計算する

AB
12025/4/1 (または =TODAY())=EDATE(A1, 3)
  1. セルA1に基準となる日付(例として2025/4/1、または=TODAY()を入力して今日の日付を表示)を入力します。
  2. セルB1に=EDATE(A1, 3)と入力します。
  3. Enterキーを押すと、セルB1に3ヶ月後の日付が表示されます。もしシリアル値で表示された場合は、前述の方法で表示形式を「日付」に変更してください。

例2:ある日付の6ヶ月前の日付を計算する

AB
12025/10/15=EDATE(A1, -6)
  1. セルA1に基準となる日付(2025/10/15)を入力します。
  2. セルB1に=EDATE(A1, -6)と入力します。
  3. Enterキーを押すと、セルB1に6ヶ月前の日付が表示されます。

月末日の処理:EDATE関数の賢い挙動

EDATE関数の大きな利点の一つが、月末日の処理です。

例3:1月31日から1ヶ月後の日付を計算する

AB
12025/1/31=EDATE(A1, 1)
  1. セルA1に2025/1/31と入力します。
  2. セルB1に=EDATE(A1, 1)と入力します。
  3. Enterキーを押すと、セルB1には2025/2/28と表示されます。2025年は平年であるため、2月は28日までです。EDATE関数は、自動的に翌月の最終日に調整してくれます。うるう年(例: 2024/1/31の1ヶ月後は2024/2/29)でも正しく機能します。

直接日付を入力する際の注意点

関数内で開始日を直接入力する場合、日付は必ずダブルクォーテーションで囲む必要があります。

セル内容
A1=EDATE(“2025/1/1”, 6) (正しい)
A2=EDATE(2025/1/1, 6) (間違い:日付として認識されず、割り算として計算される)

日付を文字列として入力する際の形式は、お使いのExcelの地域設定によって異なります。「2025/1/1」や「2025-1-1」などが一般的です。

オートフィルと組み合わせて連続した日付を生成する

EDATE関数は、Excelのオートフィル機能と組み合わせることで、連続した日付データを簡単に生成できます。

例4:契約開始日から1年ごとの契約更新日を一覧で作成する

AB
1契約開始日契約更新日
22023/4/1=EDATE(A2, 12) (12ヶ月後=1年後)
3=EDATE(A2, 12) (A2セルを基準に1年後を計算)=EDATE(A3, 12) (B2セルをB3セルにオートフィルした場合)
  1. セルA2に最初の契約開始日(2023/4/1)を入力します。
  2. セルB2に=EDATE(A2, 12)と入力します。
  3. B2セルの右下隅にあるフィルハンドル(小さな四角)をドラッグして、下にコピーします。
  4. A列にも同様に基準となる日付を入力することで、対応する更新日を瞬時に算出できます。

この機能を使えば、数百件、数千件のデータでも瞬時に処理できるため、手作業による入力ミスや時間の浪費を防げます。

EDATE関数の利用シーン:ビジネスでの実用例

EDATE関数は、さまざまなビジネスシーンでその真価を発揮します。ここでは、具体的な利用例をいくつかご紹介します。

1. 契約管理と期日通知

  • 利用例: サービス契約の満了日、ソフトウェアライセンスの更新日、定期メンテナンスの実施予定日などの管理。
  • 活用方法:
    「契約開始日」の列(例: A列)と「契約期間(月数)」の列(例: B列)がある場合、C列に=EDATE(A2, B2)と入力することで、自動的に「契約終了日」を算出できます。さらに、条件付き書式と組み合わせることで、契約満了が近づいている日付のセルに色をつけたり、リマインダーを設定したりすることが可能です。たとえば、=EDATE(A2, B2)-TODAY()<=30(契約終了日まで30日以内)といった条件でセルを強調表示させれば、更新漏れを防ぐのに役立ちます。

2. 支払い期日と請求書発行

  • 利用例: 請求書の支払期日、ローンの返済日、家賃の徴収日などの設定。
  • 活用方法:
    支払サイト(例:「30日サイト=月末締め翌月末支払い」 締め日から30日後など)が月単位で決まっており、請求書の発行日(例: A列)と同じ日が支払日である場合に使えます。B列に=EDATE(A2, 1)のように入力すると支払期日を自動計算できます。EDATE関数は月単位での日付計算に特化していますが、=EDATE(A2, 1)+10のように他の計算と組み合わせることで、「翌月の同じ日の10日後」のような日付も算出できます。

3. プロジェクト管理とスケジュール作成

  • 利用例: プロジェクトのマイルストーン、タスクの完了予定日、フェーズ間の期間設定。
  • 活用方法:
    各タスクの開始日と、そのタスクにかかる「月数」を定義しておけば、=EDATE(開始日, 期間月数)で自動的に完了予定日を算出できます。複数のタスクが連動している場合、前のタスクの完了予定日を次のタスクの開始日として、EDATE関数を連鎖的に使うことで、全体のスケジュールを自動的に調整することが可能になります。

4. 人事・給与管理

  • 利用例: 従業員の入社日からの勤続年数計算、定期健康診断の実施時期、研修期間の終了日。
  • 活用方法:
    従業員の入社日(A列)がある場合、勤続3ヶ月試用期間終了日なら=EDATE(A2, 3)、勤続1年の節目なら=EDATE(A2, 12)のように計算できます。定期健康診断の実施が「入社日と毎年同じ月」であれば、=EDATE(健康診断日, 12)で次回の実施月を簡単に特定できます。

5. 在庫管理と賞味期限

  • 利用例: 商品の製造日から賞味期限、食材の仕入れ日から使用期限。
  • 活用方法:
    製造日(A列)と賞味期限までの月数(B列)がある場合、=EDATE(A2, B2)で賞味期限日を算出できます。在庫品の回転率や廃棄ロスの削減に役立てるため、EDATE関数で算出した期限が迫っている商品を強調表示させるなどの工夫も可能です。

これらの例からわかるように、EDATE関数は単独で使うだけでなく、他の関数やExcelの機能(条件付き書式、オートフィルなど)と組み合わせることで、その実用性が大きく広がります。

EDATE関数の応用:日付計算の柔軟性を高める

EDATE関数は単体でも強力ですが、他の関数と組み合わせることで、さらに複雑な日付計算や、特定のニーズに合わせた柔軟な処理が可能になります。

1. EDATE + TEXT関数:日付を特定の形式で表示する

EDATE関数はシリアル値を返しますが、TEXT関数を使うことで、そのシリアル値を好きな形式の日付文字列に変換できます。

=TEXT(EDATE(開始日, 月数), “表示形式”)

: A2に入力した2025/1/15の3ヶ月後を「2025年4月15日(火)」のように表示したい場合

  • =TEXT(EDATE(A2, 3), “yyyy年m月d日(aaa)”)
  • 結果: 2025年4月15日(火)

これにより、Excelの表示形式設定では難しい、よりカスタマイズされた日付の表現が可能になります。

2. EDATE + IF関数:条件に応じた日付計算

特定の条件に基づいて日付を計算したい場合に、IF関数とEDATE関数を組み合わせられます。

構文: =IF(論理式, 真の場合のEDATE関数, 偽の場合のEDATE関数)

: 契約の種類(A1セル)によって、更新期間(月数)が異なる場合

  • A1が「長期」なら12ヶ月後、それ以外なら6ヶ月後を計算する
  • =IF(A1=”長期”, EDATE(B1, 12), EDATE(B1, 6))
  • B1セルに開始日が入っていると仮定

3. EDATE + DAY/MONTH/YEAR関数:特定の日付要素の抽出

EDATE関数で計算した日付から、年、月、日などの特定の部分だけを抽出したい場合に便利です。

: 契約更新日の「月」だけを知りたい

  • =MONTH(EDATE(A2, 12))
  • これにより、更新月の数字(例: 4)が得られます。

4. EDATE + DATEDIF関数:期間計算との組み合わせ

DATEDIF関数は、二つの日付間の期間(年数、月数、日数)を計算する関数です。EDATE関数で将来の日付を計算し、その日付と今日との期間をDATEDIF関数で計算するといった使い方ができます。

: ある契約開始日(A2)から1年後の日付と今日(TODAY())との残りの月数を計算

  • =DATEDIF(TODAY(), EDATE(A2, 12), “YM”)
  • “YM”は、年数と日数を除いた月数を返します。

5. EDATE + WORKDAY/NETWORKDAYS関数:営業日を考慮した日付計算

EDATE関数はあくまでカレンダー上の月数計算です。土日祝日などの営業日を考慮して日付を計算したい場合は、平日のシリアル値を返すWORKDAY関数やNETWORKDAYS関数と組み合わせる必要があります。

: あるタスクの開始日(A2)から3ヶ月後の、最初の営業日を知りたい

  • =WORKDAY(EDATE(A2, 3), 1)
  • この式は、まずEDATE関数でA2から3ヶ月後の日付を計算します。その後、計算結果をWORKDAY関数の開始日とし、そこから「1営業日後」を算出することで、3ヶ月経過後の最初の営業日を特定するのに役立ちます。祝日リストを含める場合は、WORKDAY関数の第3引数に祝日リストの範囲を指定します。

EDATE関数使用時のトラブルシューティング

EDATE関数の使用中のよくある問題とその解決策を解説します。

1. 日付が数値(シリアル値)で表示される

EDATE関数を使ったのに、「45678」のような数字(シリアル値)が表示されてしまうことがあります。

原因:セルの表示形式

EDATE関数は、日付をExcel内部で管理しているシリアル値という数字で返します。そのため、セルの表示形式が「標準」になっていると、このシリアル値がそのまま表示されてしまうのです。

解決策:表示形式の変更

シリアル値が表示されているセルを、日付として表示されるように変更しましょう。

  1. シリアル値が表示されているセルを選びます
  2. 「ホーム」タブの「数値」グループにあるドロップダウンリストをクリックし、「短い日付形式」または「長い日付形式」を選びます。

2. #VALUE! エラーが表示される

EDATE関数を使うと「#VALUE!」エラーが出てしまうことがあります。これは、関数に入れる値(引数)が間違っているときに表示されるエラーです。

原因:引数の認識エラー

主な原因は、EDATE関数に指定する「開始日」や「月数」が、Excelで正しく認識されていないためです。

  • 「開始日」が日付として認識されていない:
    日付を直接入力するときに、”2025/1/1″のようにダブルクォーテーションで囲んでいない
    セルに入っている日付が、見た目は日付でも実は文字列として扱われている
  • 「月数」が数値として認識されていない:
    「月数」の引数に、数字ではないテキストなどが入っている。

解決策:引数の確認と修正

エラーを解消するために、以下の点を確認してみましょう。

  • 開始日の確認
    日付を直接入力する場合:必ず”2025/1/1″のようにダブルクォーテーションで囲んでください
    セル参照を使う場合:参照しているセルが日付として認識されているか(=ISNUMBER(セル)でTRUEか)確認しましょう。もし文字列なら、「区切り位置」機能やDATEVALUE関数で日付に変換してください。
  • 月数の確認:
    「月数」の引数には、必ず整数(例: 3, -6)を入力します。

3. 計算結果が期待通りにならない(特に月末処理)

日付計算で「1ヶ月後」などを求めるとき、特に月末が絡むと期待通りにならないことがあります。

原因:EDATE関数の誤解

EDATE関数は「指定した日付の、指定月数後の同じ日付」を返します。たとえば、1月20日の1ヶ月後は2月20日です。

しかし、1月31日の1ヶ月後は、2月に31日がないため、EDATE関数は2月の最終日(2月28日または29日)を返します。これは月の日数の違いを考慮したEDATE関数の正しい動作です。EDATE関数は、計算結果が2月30日や6月31日など存在しない日付となる場合に、指定した月の月末の日付に自動調整されます。

たとえば5月28日〜31日を開始日とした場合、3ヶ月前の日付を求めると、いずれも2月28日(平年の場合)が返されることを押さえておきましょう。

解決策:EOMONTH関数の利用

常に「〇ヶ月後の月末日」を計算したい場合は、EOMONTH関数を使います。

  • EDATE関数: 「日付を基準に月を進めたい」場合に使用。月末に合わせたいなら、開始日も月末日である必要があります。
  • EOMONTH関数: 「常に月の最終日を計算したい」場合に使用します。
    • : =EOMONTH(“2025/1/15”, 1) は 2025年2月28日を返します。

EDATE関数で日付管理をスマートに効率化しよう

EDATE関数は、基準日から月単位で前後にずらした日付を自動計算してくれる非常に便利な関数です。契約管理や支払期日、プロジェクトスケジュール、在庫管理など、日付を扱う多くの業務で活用できます。

月末の自動調整や他関数との組み合わせにより、複雑な日付処理も簡単に自動化でき、作業の正確性とスピードが格段に向上します。ぜひ日常業務にEDATE関数を取り入れ、Excel作業をよりスマートにしていきましょう。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事