エクセルで作業をしていると、このような悩みを持ったことはないでしょうか?
・現時点での年齢や勤続年数を簡単に計算したい!
・「1年3ヵ月」みたいに、「年数」や「月数」みたいに表示させたい!
・DATEDIF関数って聞いたことはあるけど、使い方がイマイチ分からない。。
エクセルを使っていると、「日付の差」や「期間」を正確に出したい場面って多いですよね。
ただ、単純な引き算では、「年」や「月」単位で出すのが難しかったりしますよね。。
でも、もう大丈夫!
この記事では、これらの問題を解決に導く「DATEDIF関数」を紹介します!

え?DATEDIF関数って何?
と思われた方もいらっしゃるかもしれません。
実はこの「DATEDIF」、Excel上では関数候補に出てこない「知る人ぞ知る」関数です。
下のように、検索しても出てこないんですよね~。。。
なので、存在を知らない人も結構多いと思います。

非公式扱いのようで、使い方次第ではエラーになりやすいため、その点は注意が必要です。
ただ日数計算には便利な関数なので、よくあるエラーの対処法や活用例を紹介していきます。
「エクセルで、年数や月数など、日付の差をうまく計算したい!」
「DATEDIF関数を聞いたことはあるが、使い方がよくわからない。。」
と思っている方!
ぜひ一度目を通していただけると嬉しいです!
DATEDIF関数って何?
DATEDIF関数は、2つの日付の差を計算するために使います。
具体的には、開始日と終了日を指定することで、日数や月数、年数などの差を簡単に求めることができます。日付の差を計算したい場合に非常に便利です!
DATEDIF関数の基本構文
DATEDIF関数の引数は、以下の通りとなっています。
=DATEDIF(開始日, 終了日, 単位)
開始日、終了日はそのままの通りですが、単位は以下6種類があります。
計算したい単位を指定することで、年数であったり、月数であったりとカスタマイズすることができます!
■単位の種類
単位 | 説明 |
“Y” | 年単位で差を返す |
“M” | 月単位で差を返す |
“D” | 日単位で差を返す |
“MD” | 月や年を無視し、日付の差だけを返す |
“YM” | 年を無視し、月だけの差を返す |
“YD” | 年を無視し、日付だけの差を返す |
DATEDIF関数が関数一覧に出てこない理由
DATEDIF関数は、旧Lotus1-2-3との互換性のために残された関数です。
非公式扱いのため、関数一覧にも表示されないようですね。
Excel では、Lotus 1-2-3 の古いブックをサポートするために、DATEDIF 関数が用意されています。 DATEDIF 関数では、特定のシナリオで誤った計算結果を返すことがあります。 詳細については、この記事の既知の問題のセクションを参照してください。
参考:DATEDIF関数 – Microsoftサポート
非公式扱いのため、使い方を間違えるとエラーになりやすい点にはご注意ください。
よくあるエラーとその対処法
ここでは、DATEDIF関数でよく発生するエラーについて紹介します。
エラー内容 | 原因 | 解決策 |
---|---|---|
#NUM! | 終了日が開始日より前 | 日付の順番を修正 |
#VALUE | 日付形式ではない | セルを「日付形式」に修正 |
特に開始日と終了日の記載順番間違いはあるあるかな~と。
私だけでしょうか(汗
ときどき、「あれ?どっちだったっけ?」と迷うときがあるので、個人的には

DATEDIFには、きゅう~しん♪(=旧・新)
的なリズムで、”開始日=旧・終了日=新”というイメージで頭に入れています。
(伝わる人には伝わるかな。。。)
はい、どうでもいいですね(笑)
DATEDIF関数を使うメリットとは?
実際に、DATADIF関数はどういう使い方ができるのだろう?と思いますよね。
DATEDIF単体でも便利な関数ですが、複数使用したり、他の関数と組み合わせることでさらに便利に使用することができます。
どのようなメリットがあるか、紹介していきます。
年数・月数・日数の差をそれぞれ別に計算できる!
DATEDIF関数の最大の強みは、「年数」、「月数」、「日数」だけなど、目的に合わせて差分を柔軟に取り出すことができることです。
通常の引き算では日数しか計算できないですが、年齢を日数で表現すると分かりにくいですよね。。
そういうときは、DATEDIF関数で「年数」だけ計算すれば、簡単に年齢を表現できます!
●年●ヵ月●日のように、分かりやすい表現も可能!
DATEDIF関数を複数使うことで、「●年●ヵ月●日」のような期間の表現をすることもできます。
見る側にとっても分かりやすい、スマートな表現をすることができますね!
IF関数やTEXT関数など、他の関数と組み合わせることで柔軟な出力ができる!
DATEDIF関数は、他の関数と組み合わせることでさらに便利に使うことができます。
例えばIF関数と組み合わせることで、「プロジェクトの経過日数がまだ期限にきてなければ、日数進捗率を表示する」のように、条件付きでの出力も可能です。
他の関数との組み合わせで、さらなる業務効率アップを期待できます。
DATEDIF関数を実際に使ってみると・・・
例えば2020年1月1日から2025年3月2日までの日付の差を求める場合、各単位の結果は以下の通りです!2020年と2024年はうるう年ですが、その日数も考慮されています。

でも日にちをいちいち入力するのも面倒ですよね。
セルに日付を入力しておけば、そのセルを参照して計算することもできます!

DATEDIF関数の活用方法
DATEDIF関数は様々な場面で活躍します!
どのようなシーンで役に立つか、活用方法も合わせて紹介します!
誕生日から年齢を計算
DATEDIF関数では、簡単に年齢を計算することができます!
年齢別での集計や、成人しているか・60歳以上かなどの年齢の確認をするとき、非常に便利です!
以下のように、
・開始日:誕生日
・終了日:今日の日付
・単位:Y
を指定すると、現時点での年齢を計算することができます!

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

数式が長いため、以下に記述します。
今回はセルC3に記述している誕生日を参照しているため、使用する箇所によって参照先を変更してください!
=DATEDIF(TODAY(), DATE(YEAR(TODAY()) + IF(DATE(YEAR(TODAY()),MONTH(C2),DAY(C2)) < TODAY(), 1, 0), MONTH(C2), DAY(C2)), "D")
勤続年月を「○年○ヵ月」と分かりやすく表示
DETEDIF関数を使えば、勤続年月も簡単に計算することができます!
また文字列を結合させると、「○年○ヵ月」と分かりやすく表示させることもできます!

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

数式が長いため、以下に記述します。
今回はセルC3/C4に記述している日付を参照しているため、使用する箇所によって参照先を変更してください!
=TEXT(DATEDIF(C3,C4,"y"),"00"&"年") & TEXT(DATEDIF(C3,C4,"ym"),"00"&"ヶ月")
プロジェクトの進行率を表示
DATEDIF関数を使うと、プロジェクトなどの期限があるものを管理するときも便利です!
例えば、プロジェクト開始から現在どのくらいの進捗率であるかを計算することもできるので、プロジェクトが遅れているかどうか、確認する目安の一つとすることができます!

=IF(C4>C5, DATEDIF(C3,C5,"d")/DATEDIF(C3,C4,"d"), 1)
またデータバー(条件付き書式)なども加えると、視覚的にも進捗具合が分かりやすくなります!

まとめ:DATEDIF関数を使いこなして、日付計算をスマートに!
DATEDIF関数は、非公式ゆえに注意点も多いです。
少しクセがあるため、使う場面を理解して正しく使うことが大切です。
とはいえ、日付差を計算するための非常に便利な関数です。
年齢の計算や勤怠管理、プロジェクト管理など、さまざまなシーンで使用できます。
状況に応じて使い分け、活用していきましょう!
この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。
最後まで読んでいただき、ありがとうございました!
コメント