【関数】開始日から終了日までの「年数」・「月数」・「日数」を計算できる「DATEDIF」の使い方
AさんAさん

Excelで年齢等の年数や月数を計算したいです。
どうすれば計算できますかね?

森田森田

その場合は、関数のDATEDIFを活用すると良いですよ!
では、DATEDIFの使い方について解説していきますね。

はじめに

この記事は関数の概要の使い方を把握していることが前提です。

参考記事

関数の概要については以下の記事をご参照ください。

2つの日付の間の「年数」や「月数」等を計算したい場合は「DATEDIF」が有効

実務では、2つの日付(開始日/終了日)の間の年数や月数を計算したいケースがあります。

たとえば、次のように年齢や加入年数等ですね。

こんな場合、関数のDATEDIFを使うと良いです。
DATEDIFは「デート・ディフ」と読む。

DATEDIFを使うことで、開始日から終了日までの年数や月数等、任意の単位を計算できます。

DATEDIFの構文

DATEDIFの構文は以下の通りです。

=DATEDIF(開始日,終了日,単位)
2つの日付の間の日数、月数、または年数を計算します。

引数名 必須 データ型 説明
開始日 すべて 起算日を示す単一セル(値が日付)を指定します。
終了日 すべて 最終日を示す単一セル(値が日付)を指定します。
単位 文字列 計算結果にする単位を指定します。

各引数に無効な値(文字列等)を指定した場合、エラー値「#VALUE!」が表示。
引数「開始日」・「終了日」に「1900/1/1~9999/12/31」以外の日付(シリアル値)を入力した場合、エラー値「#NUM!」が表示。
引数「開始日」・「終了日」の日付が「開始日>終了日」の場合、エラー値「#NUM!」が表示。

【参考】引数「単位」のパターン

引数「単位」は任意の単位を文字列で入力しましょう。
文字列のため、下記単位をダブルクォーテーション()で囲む必要あり。

各単位がどのような戻り値を示すかは以下の表をご覧ください。

単位 戻り値
"Y" 期間の年数です。
"M" 期間の月数です。
"D" 期間の日数です。
"MD" 開始日から終了日までの日数です。
日付の月数および年数は無視されます。
※月未満の日数
"YM" 開始日から終了日までの月数です。
日付の日数および年数は無視されます。
※年未満の月数
"YD" 開始日から終了日までの日数です。
日付の年数は無視されます。
※年未満の日数

それぞれどんな数値になるかの例は以下の通りです。

【参考】DATEDIFは「非公式関数」

あくまで参考情報となりますが、DATEDIFExcelの非公式関数です。

警告: Excel では、Lotus 1-2-3 の古いブックをサポートするために、DATEDIF 関数が用意されています。

Lotus1-2-3Excel以前に最もシェアのあった表計算ソフト。

よって、リボン「数式」タブの関数ライブラリ上にDATEDIFはありません。

実際にDATEDIFを活用する際は、以下で解説しているように関数名をすべて直接入力して挿入していきましょう。

DATEDIFの使用結果イメージ

DATEDIFを使い、開始日から終了日までの年数を計算するイメージは以下の通りです。

今回は「生年月日」列とF2セルの「基準日」の間の年数を計算しました。

上記のように計算列としてDATEDIFを使う場合、1レコードにつき1つの関数を使います。
「計算列」とは、数値/日付/時刻の列の値を計算した新たな列のこと。

ベースの数式をセットしたら、他のセルへペーストしましょう。

なお、今回は引数「終了日」は全レコードでF2セルを固定で参照するため、絶対参照にしています。

参考記事

絶対参照/相対参照の詳細については以下の記事をご参照ください。

【参考】複数の「単位」を示したい場合は

「◯年□か月」(Y+YM)のように複数の単位を併せて表示したい場合、以下2パターンのいずれかで対応すると良いでしょう。

【パターン1】複数列へDATEDIFを用意

単純に表示したい単位の種類分の列を用意するパターンです。

数式がシンプルで済み、かつ必要に応じて集計できるため、特に制約がなければこのパターンをおすすめします。
DATEDIFの各列のデータは数値。

必要に応じて表示形式をユーザー定義で設定すると良いでしょう。
上記図解では”Y”は「0年」、”YM”は「0か月」の表示形式。

【パターン2】複数のDATEDIFを連結

こちらは1つの列で複数の単位を表示したいパターンです。

表示したい単位の種類分、DATEDIF1つの数式内で連結します。
アンパサンド(&)は文字列を連結するための演算子。

必要に応じて「年」や「か月」等の具体的な単位も一緒に連結すると分かりやすいです。
DATEDIFの列のデータは文字列(連結しているため)。

DATEDIFの数式の挿入手順

上記の結果を得るための手順は以下の通りです。

  1. 関数を挿入するセルを選択
    ※今回はD2セル
  2. =datedif(」と入力
  3. 開始日を示すセルを選択
    ※今回はF2セル(絶対参照)
  4. コンマ(,)を入力
  5. 終了日を示すセルを選択
    ※今回はC2セルを選択
  6. コンマ(,)を入力
  7. 任意の単位を入力
    ※今回は「”Y”」を入力
  8. Enter」キーで確定
  9. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はD3~D11セルへペースト

手順②の際にIMEを半角英数モードにすること(大文字でも可)。
テーブルの場合、手順⑨は不要(全レコードへ数式が自動的にコピーされる)。

【注意】DATEDIFの落とし穴

DATEDIFMicrosoft公式ページ上でも誤った計算結果を示すことも明記されています。

DATEDIF 関数では、特定のシナリオで誤った計算結果を返すことがあります。 詳細については、この記事の既知の問題のセクションを参照してください。

ちなみに、「既知の問題」とは以下の部分です。

"MD" 引数は、負の値、ゼロ、または不正確な結果を返すことがあります。

詳細はMicrosoft公式ページをご参照ください。

また、上記以外にも落とし穴があります。

  • 落とし穴その1:うるう年を処理できない"MD"
  • 落とし穴その2:うるう年を処理できない"YD"
  • 落とし穴その3:月末日の処理が甘い"M" "YM"
  • 落とし穴その4:うるう年の処理に問題がある"Y"
  • 落とし穴その5:暗黙の時刻「000秒」

詳細は引用元の記事をご確認いただきたいですが、こうした仕様や注意事項を理解して使用しましょう。

なお、上記記事では"Y""YM"”M”3つだけを使用することを推奨されています。
そもそも”D”は数式で「終了日-開始日」の引き算(減算)で同じ結果を得ることが可能なため、あえてDATEDIFを使う必要性はなし。

DATEDIFの年数/月数のカウントの仕様と実際のルールに相違がある場合、必要に応じて引数「終了日」に「+1」する等、調整して使用すると良いでしょう。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_ワークシート関数_DATEDIF.xlsx

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ブックを開いたら、次の手順を実施してください。(今までの解説のまとめです)

  1. 関数を挿入するセルを選択
    ※今回はD2セル
  2. =datedif(」と入力
  3. 開始日を示すセルを選択
    ※今回はF2セル(絶対参照)
  4. コンマ(,)を入力
  5. 終了日を示すセルを選択
    ※今回はC2セルを選択
  6. コンマ(,)を入力
  7. 任意の単位を入力
    ※今回は「”Y”」を入力
  8. Enter」キーで確定
  9. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はD3~D11セルへペースト

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

DATEDIFは日付データを元にした計算列の追加に役立つ関数の一つです。

定期的に年数/月数を計算する計算列を作成する機会があるなら、ぜひ覚えておいた方が良いですね。

なお、DATEDIF以外にもExcelでのデータ整形の各種テクニックを拙著で解説していますので、こちらも参考にしてみてください。


ご参考になれば幸いですm(_ _)m

森田森田

DATEDIFとセットで覚えておいた方が良い関数は、2つの日付の間の年数を計算できる「YEARFRAC」です。
それぞれの関数の仕様や注意点を理解の上で活用し、日付間の計算に役立ててください。