PR

Excel DATEDIF関数の使い方|年齢・勤続年数・○年○ヶ月表示も解説

Excel
記事内に広告が含まれています。

Excelで日付を扱っていると、

  • 年齢を自動計算したい
  • 勤続年数を求めたい
  • 「3年5ヶ月」のように分かりやすく表示したい
  • 2つの日付の差を年・月・日単位で計算したい

と思うことはありませんか?

そんなときに便利なのが DATEDIF関数 です。

DATEDIF関数を使えば、開始日と終了日を指定するだけで、年数・月数・日数の差を簡単に計算できます。

この記事では、

  • DATEDIF関数の基本的な使い方
  • 年齢を計算する方法
  • 勤続年数を計算する方法
  • ○年○ヶ月表示の作り方
  • よくあるエラーと対処法

を図解付きで解説します。

DATEDIF関数とは?

DATEDIF関数は、2つの日付の差を計算するための関数です。
開始日と終了日を指定することで、日数や月数、年数などの差を簡単に求めることができます。

年数・月数・日数をそれぞれ計算できるため、
・年齢管理
・勤続年数管理
・契約期間管理
・プロジェクト期間管理
などでよく利用されます。

👉日付だけでなく、時間計算で困っている場合は以下の記事も参考にしてください。

DATEDIF関数の基本構文

DATEDIF関数の引数は、以下の通りとなっています。

=DATEDIF(開始日, 終了日, 単位)

DATEDIF関数の単位一覧

DATEDIF関数では、計算したい単位を指定できます。
単位は以下6種類あります。

■DATEDIF関数の単位一覧

単位説明
“Y”年単位で差を返す
“M”月単位で差を返す
“D”日単位で差を返す
“MD”月や年を無視し、日付の差だけを返す
“YM”年を無視し、月だけの差を返す
“YD”年を無視し、日付だけの差を返す

例えば、
・年齢 → ”Y”
・勤続月数 → ”M”
・経過日数 → ”D”
を使用することで求めることができます。

DATEDIF関数を実際に使ってみると?

ここまでで単位の種類を紹介しましたが、
「Y」、「YM」、「YD」だけ見ても、実際にどのような結果になるのか分かりにくいですよね。

そこで、
・開始日:2020/1/1
・終了日:2025/3/2
を例に、各単位でどのような結果になるのか確認してみましょう。

datedif_calculation-result_No1

2020年と2024年はうるう年ですが、DATEDIF関数ではその差も考慮して正しく計算されます。

また、実務では日付を直接入力することは少なく、開始日と終了日をセルに入力して参照するケースが一般的です。

例えば開始日をセルC3、終了日をセルC4に入力して日数を求める場合は、次のように記述できます。

=DATEDIF(C3,C4,"D")

※以下画像では単位もセル参照しています。

datedif_calculation-result_No2

日付をセル参照にしておくことで、日付が変わっても自動で再計算されるため便利です。

誕生日から年齢を計算する方法

DATEDIF関数では、簡単に年齢を計算することができます!
年齢別での集計や、成人しているか・60歳以上かなどの年齢の確認をするとき、非常に便利です!

以下のように、
・開始日:誕生日
・終了日:今日の日付
・単位:Y

を指定すると、現時点での年齢を計算することができます!

datedif_calculation-age

👉今日の日付を自動取得するTODAY関数や、曜日表示について詳しく知りたい方は、こちらの記事もおすすめです。

次の誕生日までの日数を計算する方法

次の誕生日まで残り何日あるかも、DATEDIF関数を使えば簡単に計算できます!
通常は誕生日からの経過日数を算出しますが、このように未来へのカウントダウンとしても活用できます!

datedif_calculation-next-birthday

数式が長いため、以下に記述します。
今回はセルC3に記述している誕生日を参照しているため、使用する箇所によって参照先を変更してください!

=DATEDIF(TODAY(), DATE(YEAR(TODAY()) + IF(DATE(YEAR(TODAY()),MONTH(C2),DAY(C2)) < TODAY(), 1, 0), MONTH(C2), DAY(C2)), "D")

勤続年月を「○年○ヵ月」で表示する方法

DATEDIF関数を使えば、勤続年月も簡単に計算することができます!
また文字列を結合させると、「○年○ヵ月」と分かりやすく表示させることもできます!

datedif_calculation-years-of-service_No1
=DATEDIF(C3,C4,"y")&"年"&DATEDIF(C3,C4,"ym")&"ヵ月"

また、TEXT関数と組み合わせることで、見た目をきれいに整えることもできます。
例えば「○○年○○ヵ月」など、表示桁数をそろえる場合などに便利です!

datedif_calculation-years-of-service_No2

数式が長いため、以下に記述します。
今回はセルC3/C4に記述している日付を参照しているため、使用する箇所によって参照先を変更してください!

=TEXT(DATEDIF(C3,C4,"y"),"00"&"年") & TEXT(DATEDIF(C3,C4,"ym"),"00"&"ヶ月")

プロジェクトの進行率を計算する方法

DATEDIF関数を使うと、プロジェクトなどの期限があるものを管理するときも便利です!
例えば、プロジェクト開始から現在どのくらいの進捗率であるかを計算することもできるので、プロジェクトが遅れているかどうか、確認する目安の一つとすることができます!

datedif_calculation-progress-project_No1
=IF(C4>C5, DATEDIF(C3,C5,"d")/DATEDIF(C3,C4,"d"), 1)

またデータバー(条件付き書式)なども加えると、視覚的にも進捗具合が分かりやすくなります!

datedif_calculation-progress-project_No2

DATEDIF関数が使えない原因

ここでは、よくあるDATEDIF関数が使えない原因を紹介します。

#NUM! エラーが発生する

終了日が開始日より前になっていると、#NUM!エラーが発生します。

例えば、以下のようなケースです。

=DATEDIF("2025/12/31","2025/1/1","D")

この場合は、開始日と終了日を正しい順番に修正します。

DATEDIF関数を手入力する場合、通常の関数みたいに引数名が出てきません。
開始日と終了日を間違えて入力してしまうケースは多いため、注意してください。

#VALUE! エラーが発生する

日付が文字列などになっている場合、#VALUE!エラーが発生します。

文字列になっていないかチェックし、セルの表示形式を日付に変更してください。

関数候補に表示されない

DATEDIF関数は、旧Lotus1-2-3との互換性のために残された関数です。
非公式扱いのため、関数一覧には表示されないようです。

datedif_can-not-find

Microsoftサポートに詳細が書いてありますので、興味のある方はチェックしてみてください。

Excel では、Lotus 1-2-3 の古いブックをサポートするために、DATEDIF 関数が用意されています。 DATEDIF 関数では、特定のシナリオで誤った計算結果を返すことがあります。 詳細については、この記事の既知の問題のセクションを参照してください。

参考:DATEDIF関数 – Microsoftサポート

そのため、実際にDATEDIF関数を使うときは

=DATEDIF(

と、手入力する必要があります。

👉DATEDIF以外にもExcelで発生するエラーをまとめて確認したい場合は、こちらの記事がおすすめです。

DATEDIF関数を使うときの注意点

DATEDIF関数は便利ですが、いくつか注意点があります。

■DATEDIF関数を使うときの注意点
・終了日が開始日より前だとエラーになる
・関数候補に表示されない
・MD/YD/YMは少し特殊な計算になる

特に「MD」は月と年を無視した日数を返すため、想定と異なる結果になる場合があります。

まずは

  • Y(年)
  • M(月)
  • D(日)
  • YM(余り月数)

を覚えておけば十分です。

よくある質問(FAQ)

DATEDIF関数は今でも使えますか?

はい。
DATEDIF関数はExcelの関数候補には表示されませんが、現在のMicrosoft 365やExcel 2021でも利用できます。
ただし古い互換機能として残されているため、手入力で使用する必要があります。

DATEDIF関数と単純な日付の引き算の違いは何ですか?

日付の引き算では日数しか求められません。
一方、DATEDIF関数を使うと、
・年数
・月数
・日数
をそれぞれ計算できます。
年齢や勤続年数の計算にはDATEDIF関数が便利です。

DATEDIF関数で年齢を計算できますか?

できます。
以下の数式で現在の年齢を計算できます。

=DATEDIF(誕生日,TODAY(),"Y")

社員名簿や顧客管理などでよく利用されます。

DATEDIF関数で○年○ヶ月表示はできますか?

できます。
以下のようにDATEDIF関数を組み合わせます。

=DATEDIF(A2,B2,"Y")
&"年"
&DATEDIF(A2,B2,"YM")
&"ヶ月"

勤続年数や契約期間の表示によく使われます。

DATEDIF関数で#NUM!エラーになる原因は?

終了日が開始日より前になっている可能性があります。
DATEDIF関数は

開始日 → 終了日

の順番で指定する必要があります。

DATEDIF関数が入力候補に出てきません

仕様です。
DATEDIF関数はExcelの関数一覧に表示されません。
直接、

=DATEDIF(

と入力して利用してください。

まとめ:DATEDIF関数で、日付計算をスマートに!

DATEDIF関数を使うと、2つの日付の差を簡単に計算できます。

特に実務では、

  • 年齢計算
  • 勤続年数計算
  • 契約期間管理
  • プロジェクト進捗管理

で活躍する場面が多くあります。

まずは

=DATEDIF(開始日,終了日,"Y")

=DATEDIF(開始日,終了日,"Y")&"年"&DATEDIF(開始日,終了日,"YM")&"ヶ月"

を覚えるだけでも、日付計算がかなり楽になります。

ぜひ業務効率化に活用してみてください。

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

🥷 「現代で暮らすゆる忍者」ラインスタンプシリーズ公開中!日常や仕事、夫婦の会話など様々なシーンを製作しています
▶ LINEスタンプ一覧はこちら

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました