
この記事では、Excelでの演算子を使った基本的な日付の引から、EDATE関数を使った年月日の引き算、DATEDIF関数を使った経過日数の求め方をご紹介します。引き算がエラーになる場合の解決方法も解説しているので、ぜひ参考にしてみてください。
日数の引き算
日数を引き算する

日付の減算は、算術演算子(-)を使って簡単に求められます。
- 1日前:
=A1-1 - 1週間前:
=A1-7
月数・年数を引き算する

日付に「月数や年数」を減算したい場合、EDATE関数を使います。
EDATE関数は、指定した日付から特定の月数だけ後または前の日付を返します。年単位の計算も、EDATE関数の月数に「年数 × 12」を指定することで対応できます。
- 1ヶ月前:
=EDATE(A2,-1) - 1年前::
=EDATE(A2,-1*12) - 1年1ヶ月前:
=EDATE(A2,-1*12-1)
EDATE関数の引数:(開始日, [月])
日付同士の引き算
単純な日数を求める

日付同士を引き算してその日数を求めるには、「終了日 – 開始日」を計算します。
例:=B2-A2
複合的な期間(n年nヶ月n日)を求める

日付同士を引き算して、その期間を「年」「月」「日」で求めたい場合は、DATEDIF関数を使用します。この関数は、指定した「開始日」と「終了日」の期間を、指定した「単位」で返す関数です。
- 月数を求める場合:
=DATEDIF(A2,B2,"YM") - 日数を求める場合:
=DATEDIF(A2,B2,"MD")
もし、これらを1つの数式で求めたい場合、次のようになります。
例:=DATEDIF(A2,B2,"YM")&"ヶ月"&DATEDIF(A2,B2,"MD")&"日"
DATEDIF関数の引数:(開始日, 終了日, 単位)
DATEDIF関数の単位一覧
“D”: 期間全体の日数
“Y”:期間全体の年数
“M”:期間全体の月数
“YM”:年数を含まない残りの月数
“MD”:年数と月数を含まない残りの日数
“YD”:年数を含まない日数
日付の引き算ができない原因
日付が数字(シリアル値)で表示される

原因
セルの表示形式が「標準」のままになっていると、数字(日付に対応するシリアル値)がそのまま表示されてしまいます。
解決方法
結果のセルを選択し、「ホーム」タブの「数値」にある表示形式を「日付形式」に変更します。
結果が「#####」になる

原因
- セルの幅が狭い: 計算を表示するのに、セルが狭すぎる。
- 引き算の結果がマイナスになっている: 日付の計算結果がマイナスになると「#####」が表示されます。
解決方法
- セルの幅を広げる: 「#####」が表示されているセルの右端をダブルクリックするか、ドラッグして幅を広げます。
- 引き算の順序を確認する: 引き算で日付の差(経過日数)を求める場合は、「終了日 − 開始日」の順番になっているか確認します。
日数が日付になる

原因
セルの表示形式が「日付」になっていると、数字に対応する日付が表示されてしまいます。
解決方法
結果のセルを選択し、「ホーム」タブの「数値」にある表示形式を「標準」に変更します。
DATEDIF関数が#NAMEエラーになる

原因
- DATEDIF関数の第3引数(単位)に二重引用符を付け忘れると、#NAMEエラーになります。
- 「DATEDIF」のスペルにミスがあると、#NAMEエラーになります。
解決方法
=DATEDIF(A2,B2,"D")のように、単位を二重引用符で囲って入力します。- 関数名(DATEDIF)が正しく入力されているか、確認します。
DATEDIF関数が#NUM!エラーになる

原因
DATEDIF関数の開始日(第1引数)よりも終了日(第2引数)の日付が過去になっていて、結果がマイナスになる場合、#NUM!エラーになります。
解決方法
第1引数に「開始日(過去)」、第2引数に「終了日(未来)」の順で日付を指定します。