Excelで日付の差を計算する方法!日数・月数・年数の求め方を徹底解説
Excelで大量の日付データを扱っていると、2つの日付の差を計算したくなる場面が必ず訪れます。例えば、「借金を完済するまでに何ヶ月かかったのか」「目標体重まで減量するのに何日かかったのか」といった具合です。
日付の差の計算自体は簡単ですが、求めたい値によっては少し複雑になることもあります。例えば、2016年1月15日と2016年2月5日の間の月数は「0」でしょうか?それとも「1」でしょうか?満1ヶ月に達していないため「0」と考える人もいれば、月が変わっているのだから「1」と考える人もいます。
この記事では、2つの日付の差から日数・月数・年数を求めるためのさまざまな数式を、目的に応じて使い分けられるよう詳しく解説します。
2つの日付の差(日数)を計算する方法
最もシンプルなのが日数の計算です。日数の場合、計算方法は実質的に1つしかないため、数式によって答えが異なるといった心配は不要です。
以下の例では、セルA2とA3に2つの日付が入力されており、その差は802日です。Excelでは同じ値を求める方法が常に複数存在するので、ここでは代表的な3つの方法を紹介します。

方法1:単純な引き算
1つ目は、2つの日付をそのまま引き算する方法です。
=A3-A2
Excelはセルの値が日付であることを認識しているため、自動的に2つの日付間の日数を計算してくれます。非常に直感的で簡単な方法です。
方法2:DAYS関数を使う
次に、DAYS関数を使う方法です。
=DAYS(A3, A2)
この関数は「終了日」と「開始日」の2つの引数を取ります。引数の順序を逆にすると、結果はマイナスの値になるので注意しましょう。
方法3:DATEDIF関数を使う
最後に、DATEDIF関数を紹介します。これはLotus 1-2-3の時代から存在する関数ですが、実はExcelでは公式にサポートされていない隠れた関数です。
=DATEDIF(A2, A3, "D")
この数式を入力しても、Excelは引数の候補などを表示してくれません。ただし、構文やサポートされている引数についてはOfficeサポートサイトで確認できます。
おまけ:平日(営業日)の日数を求める
2つの日付の間の「平日」の日数を知りたい場合も、組み込み関数があるので簡単に計算できます。
=NETWORKDAYS(開始日, 終了日)
日数と平日の計算はこれで十分ですね。続いて、少し厄介な月数の計算を見ていきましょう。
2つの日付の差(月数)を計算する方法
最も扱いにくいのが月数の計算です。満1ヶ月として数えるか、端数の月も切り上げて数えるかで結果が変わってしまうからです。
実はExcelにはMONTHS関数が存在しますが、この関数は年を考慮せず月の数字だけを見て差を計算するため、同じ年内の2つの月の差しか求められません。実用性が低いと言わざるを得ません。
そこで、Microsoftが公式に提供している正確な数式を使いましょう。
切り上げで月数を求める数式
=(YEAR(LDate)-YEAR(EDate))*12+MONTH(LDate)-MONTH(EDate)
切り下げで月数を求める数式
=IF(DAY(LDate)>=DAY(EDate),0,-1)+(YEAR(LDate)-YEAR(EDate))*12+MONTH(LDate)-MONTH(EDate)
これらはかなり長く複雑な数式に見えますが、内部の仕組みを理解する必要はありません。そのままコピーして使えばOKです。

注意点:切り下げ用の数式は、数式バーではなくセル自体を直接編集することをおすすめします。理由は定かではありませんが、数式バーには数式全体が表示されないことがあるためです。セル内の数式を確認したい場合は、「数式」タブをクリックし、「数式の表示」を選択しましょう。

それでは、先ほどの例で2つの数式を実行するとどうなるでしょうか?結果は以下の通りです。

切り上げでは27ヶ月、切り下げでは26ヶ月という結果になりました。どちらの見方をするかによって、どちらも正解と言えます。
なお、DATEDIF関数でも月数を求められますが、この関数は満月数のみを計算するため、この例では26という結果が返されます。
=DATEDIF(A2, A3, "M")
2つの日付の差(年数)を計算する方法
年数も月数と同様に、計算方法によって結果が変わります。「満365日で1年」と数えるのか、それとも「年が変われば1年」と数えるのか、という違いです。
ここでは、2つの異なる数式を使って年数を計算してみましょう。

1つはDATEDIF関数を使った方法、もう1つはYEAR関数を使った方法です。日数の差が802日しかないため、DATEDIF関数では「2年」、YEAR関数では「3年」という結果になります。

繰り返しになりますが、これはあくまで好みの問題であり、何を計算したいのかによって使い分けるべきものです。両方の方法を知っておけば、さまざまなケースに柔軟に対応できるでしょう。
まとめ
使用する数式さえ正しく選べば、Excelで日付の差を計算するのは決して難しくありません。目的に応じて、引き算・DAYS関数・DATEDIF関数・NETWORKDAYS関数などを上手に使い分けましょう。
また、ここで紹介した以外にも便利な日付関数が多数存在します。詳細はOfficeサポートサイトで確認してみてください。ご不明な点があれば、ぜひコメントでお知らせください。
-
Excel条件付き書式の日付活用術|WEEKDAY関数で土日を自動的にハイライトする方法
このチュートリアル「Excel条件付き書式の日付」では、ExcelのWEEKDAY()関数を使って、入力された日付から曜日を判定する方法を学びます。 本チュートリアルでは、条件付き書式の基本についてもあわせて解説します。 わずか3.5時間でExcelの数式&関数をマスター! Udemyの無料コースで学べます。 数式チートシート付き「Excelの数式と関数」講座! Excel条件付き書式の数式に関するその他の記事も、ぜひあわせてご覧ください。 Excel条件付き書式の数式の基本 別のセルを基準にしたExcel条件付き書式の設定方法 条件付き書式でExcelの行に交互に色を付ける方法 オンラ
-
Excelで日付入りのタイムラインを作成する4つの簡単な方法
タイムラインとは、タスクやプロジェクトを日付順に時系列で表示したものです。すべてのタスクやプロジェクトを一箇所で確認できるため、プレゼンテーションや進捗管理に非常に便利です。この記事では、Excelで日付入りのタイムラインを作成する方法を、誰でも簡単に実践できる4つの方法で解説します。どの方法も手軽で時間の節約になるので、ぜひ参考にしてください。 練習用ファイルのダウンロード 記事の内容を実際に試したい方は、こちらから練習用ファイルをダウンロードできます。 Excelで日付入りタイムラインを作成する4つの方法 ここでは、ある企業のプロジェクトに関するデータセットを使用して各手法を説明します