【Excel】エクセルで期間を計算する(DATEDIF・年月日・年月・月数・関数の書き方)方法
Excelで「2つの日付の間が何年何ヶ月何日か知りたい」「勤続年数や年齢を自動で計算したい」と思ったことはないでしょうか。
実は、Excelには期間を計算するための専用関数「DATEDIF(デイトディフ)」が用意されており、年・月・日のさまざまな単位で2つの日付間の差を求めることができます。
この記事では、DATEDIFの基本的な書き方から、年月日・年月・月数など目的に応じた使い方まで、わかりやすく解説していきます。
Excelで日付の計算に悩んでいる方は、ぜひ最後まで読み進めてみてください。
Excelで期間を計算するにはDATEDIF関数が最適
それではまず、Excelで期間を計算する方法の結論について解説していきます。
Excelで2つの日付の間にある期間(差)を計算するとき、最もシンプルで強力なのがDATEDIF関数です。
DATEDIFは「Date Difference(日付の差)」を意味する関数で、開始日と終了日を指定することで、その間の年数・月数・日数を自由に取り出すことができます。
たとえば、入社日から今日までの勤続年数を求めたり、生年月日から現在の年齢を計算したりする場面で非常に重宝する関数といえるでしょう。
DATEDIF関数は、Excelの関数一覧(オートコンプリート)に表示されない「非公式関数」です。
しかし、実際には正常に動作するため、日付の期間計算では広く使われています。
手入力で関数を記述する必要がある点だけ、注意しておきましょう。
DATEDIFの最大の魅力は、単位を指定するだけで「年」「月」「日」を自在に切り替えられることにあります。
たとえば「3年2ヶ月15日」のような細かい表示も、関数を組み合わせることで実現可能です。
これはExcelで日付計算をするうえで、欠かせないテクニックのひとつといえるでしょう。
DATEDIF関数の基本的な書き方と単位の種類
続いては、DATEDIF関数の具体的な書き方と、使用できる単位の種類を確認していきます。
DATEDIFの基本構文は以下のとおりです。
=DATEDIF(開始日, 終了日, 単位)
引数は3つあり、それぞれの役割は次のとおりです。
| 引数 | 内容 | 例 |
|---|---|---|
| 開始日 | 期間の始まりとなる日付 | A1(例:2020/4/1) |
| 終了日 | 期間の終わりとなる日付 | B1(例:2025/3/31) |
| 単位 | 何を返すかを文字列で指定 | “Y”、”M”、”D” など |
単位に指定できる文字列は全部で6種類あります。
それぞれの意味と使い方を以下の表でまとめました。
| 単位 | 返す値 | 説明 |
|---|---|---|
| “Y” | 満年数 | 期間内の満年数を整数で返す |
| “M” | 総月数 | 期間内の総月数を整数で返す |
| “D” | 総日数 | 期間内の総日数を整数で返す |
| “YM” | 年を除いた月数 | 年を引いた残りの月数を返す |
| “YD” | 年を除いた日数 | 年を引いた残りの日数を返す |
| “MD” | 月を除いた日数 | 月を引いた残りの日数を返す |
“YM”や”MD”は、「何年何ヶ月何日」という複合表示を作るときに活躍する単位です。
単体で使うだけでなく、複数の単位を組み合わせることで、より細かい期間表示が実現できます。
「Y」を使った年数の計算方法
年数だけを求めたい場合は、単位に”Y”を指定します。
たとえば、A1セルに「2015/4/1」、B1セルに「2025/3/31」が入力されているとき、次のように記述します。
=DATEDIF(A1, B1, “Y”)
結果:9(9年)
これは満年数なので、丸々1年に満たない端数の部分は切り捨てられます。
勤続年数や年齢の計算では、この”Y”が基本になるでしょう。
「M」を使った月数の計算方法
期間全体を月数として取得したい場合は、単位に”M”を指定します。
=DATEDIF(A1, B1, “M”)
結果:119(119ヶ月)
この値は年をまたいだ総月数なので、契約期間の管理やローン返済月数の確認などに活用できます。
月単位での期間管理が必要な場面では、非常に便利な単位といえるでしょう。
「D」を使った日数の計算方法
期間全体を日数で取得したい場合は、単位に”D”を指定します。
=DATEDIF(A1, B1, “D”)
結果:3,652(3652日)
なお、Excelでは日付を数値として管理しているため、単純な引き算(B1-A1)でも日数を求めることが可能です。
しかし、DATEDIFで統一しておくと、他の単位との組み合わせがしやすく管理しやすい点がメリットといえます。
年月日・年月をまとめて表示する方法
続いては、「○年○ヶ月○日」や「○年○ヶ月」のように複数の単位を組み合わせて表示する方法を確認していきます。
Excelで期間を表示する際、「3年2ヶ月15日」のような複合表示が求められることは多いでしょう。
この場合は、DATEDIF関数を複数組み合わせ、文字列として結合する方法を使います。
年月日を表示する数式の書き方
「○年○ヶ月○日」という形式で表示したい場合、以下のように記述します。
=DATEDIF(A1,B1,”Y”)&”年”&DATEDIF(A1,B1,”YM”)&”ヶ月”&DATEDIF(A1,B1,”MD”)&”日”
それぞれの役割を整理すると、次のとおりです。
| 数式部分 | 取得する値 |
|---|---|
| DATEDIF(A1,B1,”Y”) | 満年数 |
| DATEDIF(A1,B1,”YM”) | 年を除いた月数(0〜11) |
| DATEDIF(A1,B1,”MD”) | 月を除いた日数(0〜30) |
&演算子を使って文字列として連結することで、見やすい期間表示が完成します。
たとえば、2020/4/1から2025/6/20であれば「5年2ヶ月19日」のように出力されるでしょう。
年月だけを表示する数式の書き方
日数が不要で、「○年○ヶ月」だけを表示したい場合は次のようになります。
=DATEDIF(A1,B1,”Y”)&”年”&DATEDIF(A1,B1,”YM”)&”ヶ月”
勤続年数を「年と月」で表示したいケースや、年齢を「○歳○ヶ月」で表示したいケースに最適です。
シンプルながら、実務での需要がとても高い表示形式のひとつといえるでしょう。
TODAY関数と組み合わせて自動更新する方法
期間の計算を「今日の日付」を基準に自動更新したい場合は、終了日の引数にTODAY()関数を使うのが定番の方法です。
=DATEDIF(A1,TODAY(),”Y”)&”年”&DATEDIF(A1,TODAY(),”YM”)&”ヶ月”&DATEDIF(A1,TODAY(),”MD”)&”日”
これを使えば、ファイルを開くたびに自動で最新の期間が計算されます。
勤続年数や年齢の自動計算として利用すれば、毎回手入力する手間を大幅に省けるでしょう。
TODAY関数は引数が不要で、常に今日の日付を返します。
DATEDIF(A1, TODAY(), “Y”) のように組み合わせるだけで、リアルタイムの年数計算が可能です。
年齢計算や勤続年数の管理に、ぜひ活用してみてください。
DATEDIF関数を使うときの注意点とよくあるエラー
続いては、DATEDIF関数を使う際に気をつけたい注意点と、よくあるエラーの対処法を確認していきます。
DATEDIFは便利な関数ですが、いくつかの落とし穴も存在します。
事前にポイントを押さえておくことで、ミスを防げるでしょう。
開始日が終了日より後になるとエラーになる
DATEDIFは、開始日が終了日より後(未来)の日付になるとエラー(NUM!)が発生します。
これは関数の仕様によるもので、必ず開始日 < 終了日の順で入力する必要があります。
誤った例:=DATEDIF(B1, A1, “Y”) ← 開始日と終了日が逆
正しい例:=DATEDIF(A1, B1, “Y”) ← 開始日が古い日付
データ入力の順序に注意して、常に古い日付を第1引数に置くようにしましょう。
日付がテキスト形式で入力されていると計算できない
Excelで日付を入力する際、セルの書式が「文字列」になっていると、DATEDIFが正しく計算できません。
日付として認識させるためには、セルの書式を「日付」または「標準」に設定したうえで入力する必要があります。
もし文字列で入力されてしまっている場合は、DATEVALUE関数を使って日付のシリアル値に変換するのがひとつの方法です。
=DATEDIF(DATEVALUE(A1), DATEVALUE(B1), “Y”)
入力データの形式には常に気を配ることで、余計なトラブルを避けられるでしょう。
“MD”単位は一部の月で誤差が出ることがある
“MD”(月を除いた残りの日数)は、Excelのバージョンや月の日数によって、まれに誤った値が返ることが報告されています。
特に2月など日数が少ない月にまたがる計算では、結果がマイナスになるケースも確認されています。
厳密な日数計算が必要な場面では、“MD”だけに頼らず、補完的な計算式と組み合わせて検証することをおすすめします。
基本的な勤続年数や年齢の計算であれば”Y”や”YM”が中心となるため、”MD”の出番は限定的と考えておくと安心でしょう。
まとめ
この記事では、【Excel】エクセルで期間を計算する(DATEDIF・年月日・年月・月数・関数の書き方)方法について解説しました。
DATEDIFは、Excelのオートコンプリートには表示されないものの、日付の期間計算において非常に頼りになる関数です。
“Y”で年数、”M”で月数、”D”で日数を取得でき、”YM”や”MD”を組み合わせることで「○年○ヶ月○日」という複合表示も実現できます。
TODAY関数との組み合わせにより、常に最新の勤続年数や年齢を自動計算する仕組みを作れる点も、大きな強みといえるでしょう。
一方で、開始日と終了日の順序、セルの書式、”MD”の誤差といった注意点も存在します。
これらのポイントを理解したうえでDATEDIFを活用すれば、Excelでの日付管理がぐっと効率化されるはずです。
ぜひ今日から試してみてください。