エクセルDATEDIF関数の使い方|年齢・勤務年数を簡単計算!

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
アイキャッチ

「指定した日付の差を求めたい!」
そのように悩んだことはありませんか?


指定した日付の差を求めたい

年齢や勤務年数を一瞬で計算したい

その場合は、ワークシート関数の「DATEDIF関数」を
使用すると解決します!


そんな時に便利なのが、エクセルのDATEDIF関数です。

「日付の差を求めるなら引き算で十分?」そう思うかもしれません。
でも、DATEDIF関数を使えば、年・月・日単位で簡単に計算できるうえ、手間もミスもぐっと減らせます!

ただし、DATEDIF関数はエクセルの機能の中でも少し隠れた存在で、サジェストに出てこないため、「使えない」「ない」と感じる方も多いかもしれません。

この記事では、初心者の方でもスムーズに理解できるよう、DATEDIF関数の使い方を徹底解説します。
さらに、使えない場合の代替方法や注意点についても詳しく解説します。
ぜひ最後までお読みいただき、エクセルのスキルを一段と向上させましょう!


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

関数を使いこなせれば、エクセル作業が何倍も速くなり、ミスも激減します。

でも、どこから始めればいいか迷いますよね?

初心者でもわかりやすくステップアップできる本があれば、効率的にスキルを伸ばせますよ!

目次

この記事を見てできるようになること

スポンサーリンク

DATEDIF関数でできること | 簡単にわかる主な用途

DATEDIF関数は、エクセルで日付の差を計算する際に役立つ便利な関数です。

その機能を簡単にまとめると、次のようなことができます。

⇒ さっそくDATEDIF関数について知りたい方は「事項:DATEDIF関数とは?基本的な使い方をご紹介」を見る。

DATEDIF関数の「主な」用途一覧

  • 年齢を計算する
    • 生年月日から現在の年齢を自動計算。
  • 勤務年数を求める
    • 入社日から今日までの年数や月数を簡単に把握。
  • 契約期間を計算する
    • 開始日と終了日の差を年・月・日単位で算出。
  • 日付の細かい差を取得する
    • 「月のみ」「日数のみ」など、必要に応じた情報を抽出。
  • スケジュールの期間を管理する
    • プロジェクトの期間やタスクの進行状況を効率的に管理。

なぜDATEDIF関数が便利なのか?

手動で日付を計算するのは手間がかかるうえ、ミスが生じる可能性もあります。
DATEDIF関数なら、正確で効率的な計算が可能になるため、業務の時短やミス削減につながります。

ぜひ、さまざまな日付計算にDATEDIF関数を活用してみてください!

DATEDIF関数とは?基本的な使い方をご紹介

DATEDIF関数は、エクセルで2つの日付の間の差を「年」「月」「日」単位で簡単に計算できる便利な関数です。

経過年数や経過月数、日数を計算したいときに使いこなせると、作業効率が大幅に向上します。

DATEDIF関数の基本的な構文

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


DATEDIF関数の構文
スクロールできます
引数名説明
開始日計算を開始する日付2023/01/01
終了日計算を終了する日付2023/12/31
単位計算したい単位(”Y” = 年, “M” = 月, “D” = 日)"Y", "M", "D"

より詳しい情報は、Microsoft公式 – DATEDIF 関数を参照してみてください。

単位の詳細

スクロールできます
単位計算内容
"Y"開始日から終了日までの完全に経過した年数を返します
"M"開始日から終了日までの完全に経過した月数を返します
"D"開始日から終了日までのすべての日数を返します
"MD"開始日から終了日までの日数のみを返します(年数および月数を無視)
非推奨:特定の条件下で誤った結果を返す場合があります(詳細は下記「注意点」参照)。
"YM"開始日から終了日までの月数のみを返します(年数および日数を無視)
"YD"開始日から終了日までの日数のみを返します(年数を無視、月数は考慮)

この中でよく使用されるものは「Y」「M」「D」の3つになります。

「MD」単位が非推奨の理由

公式ドキュメントで非推奨とされる理由は以下の通りです。

非推奨の理由

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

公式ドキュメントでは、代替え手段として以下のような数式を推奨しています。

=終了日 - DATE(YEAR(終了日), MONTH(終了日), 1)

この数式では、終了日の月の初日を基準にして日数を計算することで、"MD" 単位の欠点を回避できます。

DATEDIF関数の使用例

「2024年1月1日から2024年12月31日までの期間」を計算する場合は以下の通りとなります。

スクロールできます
計算内容数式結果
経過年数=DATEDIF($B$1,$B$2,"Y")0年
経過月数=DATEDIF($B$1,$B$2,"M")11ヶ月
経過日数=DATEDIF($B$1,$B$2,"D")365日
DATEDIF関数の使用例

各単位の結果について : 注意ポイント

スクロールできます
単位内容
Y完全に経過した年数を返します2024年1月1日~2024年12月31日

0年 (翌年1月1日にならない限り経過年数は増えません)
M完全に経過した月数を返します2024年1月1日~2024年12月31日

11ヶ月 (12月は完全に経過していないため)
D開始日から終了日までの
すべての日数
をカウントします
2024年1月1日~2024年12月31日

365日 (閏年のため1年が365日となります)
注意ポイント
  • 「Y」「M」単位の結果は完全に経過した期間のみを計算するため、思った通りの結果にならないことがあります。
  • 「D」単位ではすべての日をカウントするため、開始日や終了日の設定が重要です。
スポンサーリンク

DATEDIF関数を使用する際に注意すべきポイント

DATEDIF関数を使用する際には、以下の点に注意してください。

これらのポイントを理解しておくことで、予期しないエラーや誤動作を防ぐことができます。

1. 開始日と終了日の順序

開始日」が「終了日」より後の場合、#NUM! エラーが発生します。

対策

日付順序を確認し、開始日が終了日より前になるよう設定してください。

2. サジェストに表示されない

DATEDIF関数は、Excelの関数補完リスト(サジェスト)に表示されません

その理由は、元々DATEDIF関数が古いソフトウェア「Lotus 1-2-3」との互換性を保つために提供されている特殊な関数だからです。

この関数は公式にはあまり目立たない形で存在しており、現在のExcelの他の関数と比べるとサポートが限定的です。
そのため、一部の特定条件下で誤った計算結果を返すことがあるため、補完リストには含まれていません。

対策

DATEDIF関数を使用する際は、関数名や構文を正確に覚え、手動で入力する必要があります。
補完機能が使えないため、以下のように直接記述してください。

以下は例です。

=DATEDIF(A1, B1, "Y")
  • A1 : 開始日
  • B1 : 終了日
  • “Y” : 単位(例: 経過年数を計算)

設定による計算結果のずれに注意

DATEDIF関数を使用する場合、Excelの設定が原因で計算結果がずれることがあります。

特に、「1904年から計算する」設定が有効になっていると、計算結果が4年分ずれてしまうことがあります。

修正方法
  1. 「ファイル」→「オプション」をクリック。
    ※ Alt + T → O の順にキーを押してオプションを開きます。
      その場合は、3. へスキップ
  2. 「詳細設定」タブで、「次のブックを計算するとき」のセクションを確認します。
  3. 「1904年から計算する」にチェックが付いていない場合、チェックを行います。
  • 注意点
    • この設定を変更すると、すでに入力済みの日付データがずれる可能性があります。
      DATEDIF関数を使用する前に設定を確認し、必要に応じて調整してください。

3. 単位の指定ミス

単位が正しく指定されていない場合、エラー(#NUM!)や誤った結果を返します。

対策

単位は正確な英字(ダブルクォーテーション付き)で入力してください。

  • "Y"(経過年数)
  • "M"(経過月数)
  • "D"(経過日数)

4. 「MD」単位の非推奨

「MD」単位は、開始日と終了日間の年数および月数を無視して日数を返します。

しかし、特定の条件下で誤った結果や負の値を返す場合があり、公式ドキュメントでも非推奨とされています。

対策

公式が推奨する代替手段を使用してください。

=終了日 - DATE(YEAR(終了日), MONTH(終了日), 1)

この数式では、終了日の月の初日を基準に計算することで、誤動作を回避します。

5. うるう年の計算に注意

DATEDIF関数はうるう年を正確に計算するよう設計されていますが、一部の特定の開始日と終了日で意図しない動作をする場合があります。

対策

うるう年(2024年)の2月29日を計算に含む場合、日数や月数の計算結果が不正確になるケースがあります。

計算結果に違和感を感じた場合、YEARMONTHDAY関数などを組み合わせて検証してください。

6. Excelのバージョン依存

古いバージョンのExcelではDATEDIF関数が正常に動作しない、または利用できない場合があります。

対策

計算結果に違和感を感じた場合、YEARMONTHDAY関数などを組み合わせて検証してください。

スポンサーリンク

DATEDIF関数を使わない場合の計算方法

DATEDIF関数が使用できない環境やエラーを避けたい場合、以下の方法で同様の計算が可能です。

経過年数を計算する方法

以下の式を使えば、経過年数を簡単に求められます。

=YEAR(終了日) - YEAR(開始日)
注意ポイント
  • 月や日を考慮したい場合、追加の条件が必要です。
  • 開始日と終了日を両方含めたい場合は、計算結果に「+1」を加える必要があります。

使用例 : 開始日が 2023/01/01、終了日が 2025/12/31 の場合

=YEAR(DATE(2025,12,31)) - YEAR(DATE(2023,1,1))

⇒ 結果「2」

経過月数を計算する方法

次の数式で、2つの日付間の月数を求められます。

=(YEAR(終了日) - YEAR(開始日)) * 12 + (MONTH(終了日) - MONTH(開始日))
注意ポイント

こちらも、開始日と終了日を含めたい場合は「+1」が必要になる場合があります。

さらに、日単位での月またぎを正確に処理する場合は追加の計算が必要です。

使用例 : 開始日が 2023/01/01、終了日が 2025/12/31 の場合

=(YEAR(DATE(2025,12,31)) - YEAR(DATE(2023,1,1))) * 12 + (MONTH(DATE(2025,12,31)) - MONTH(DATE(2023,1,1)))

⇒ 結果「35」

経過日数を計算する方法

こちらは単純に日付の引き算を使います。

=終了日 - 開始日
注意ポイント

この計算では、終了日を含むためには「+1」を加える必要があります。

使用例 : 開始日が 2023/01/01、終了日が 2023/12/31 の場合

=DATE(2023,12,31) - DATE(2023,1,1) + 1

⇒ 結果「365」

スポンサーリンク

DATEDIF関数の活用例|年齢・勤務年数・契約期間の計算方法

DATEDIF関数は日付の差を簡単に計算できる便利な関数です。

以下に、特に役立つ活用例を3つご紹介します。

活用例1 : 年齢を計算する方法

生年月日から現在の年齢を自動で計算できます。

年齢の管理が必要な名簿や顧客リストなどで活躍します。

=DATEDIF(B1, TODAY(), "Y")
年齢の計算

活用例2 : 勤務年数を計算する方法

入社日から現在の勤務年数と月数を計算します。

社員の勤続年数管理に便利です。

=DATEDIF(B1, TODAY(), "Y") & "年 " & DATEDIF(B1, TODAY(), "YM") & "ヶ月"
勤務年数を計算する

活用例3 : 特定期間の月数を計算する方法

家賃契約やサブスクリプション契約の期間を月単位で計算したいときに便利です。

=DATEDIF(B1, B2, "M")
特定期間の月数を計算する
スポンサーリンク

この記事のまとめ

DATEDIF関数は、エクセルで日付計算を効率的に行うための便利な関数です。

この記事では、基本的な使い方から具体的な活用例、注意ポイント、そしてDATEDIF関数を使わない場合の代替方法までを詳しく解説しました。

以下のポイントをもう一度復習しましょう!

ポイントのおさらい

さらに学ぶために

DATEDIF関数の基本をマスターしたら、他のエクセル関数や自動化ツールも活用して、作業効率をさらに向上させましょう!

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「Python...
スポンサーリンク

「指定した日付の差を求めたい!」
そのように悩んだことはありませんか?


指定した日付の差を求めたい

年齢や勤務年数を一瞬で計算したい

その場合は、ワークシート関数の「DATEDIF関数」を
使用すると解決します!


そんな時に便利なのが、エクセルのDATEDIF関数です。

「日付の差を求めるなら引き算で十分?」そう思うかもしれません。
でも、DATEDIF関数を使えば、年・月・日単位で簡単に計算できるうえ、手間もミスもぐっと減らせます!

ただし、DATEDIF関数はエクセルの機能の中でも少し隠れた存在で、サジェストに出てこないため、「使えない」「ない」と感じる方も多いかもしれません。

この記事では、初心者の方でもスムーズに理解できるよう、DATEDIF関数の使い方を徹底解説します。
さらに、使えない場合の代替方法や注意点についても詳しく解説します。
ぜひ最後までお読みいただき、エクセルのスキルを一段と向上させましょう!


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度

関数を使いこなせれば、エクセル作業が何倍も速くなり、ミスも激減します。

でも、どこから始めればいいか迷いますよね?

初心者でもわかりやすくステップアップできる本があれば、効率的にスキルを伸ばせますよ!

この記事を見てできるようになること

この記事を読めば、以下のことができるようになります。

スポンサーリンク

DATEDIF関数でできること | 簡単にわかる主な用途

DATEDIF関数は、エクセルで日付の差を計算する際に役立つ便利な関数です。

その機能を簡単にまとめると、次のようなことができます。

⇒ さっそくDATEDIF関数について知りたい方は「事項:DATEDIF関数とは?基本的な使い方をご紹介」を見る。

DATEDIF関数の「主な」用途一覧

  • 年齢を計算する
    • 生年月日から現在の年齢を自動計算。
  • 勤務年数を求める
    • 入社日から今日までの年数や月数を簡単に把握。
  • 契約期間を計算する
    • 開始日と終了日の差を年・月・日単位で算出。
  • 日付の細かい差を取得する
    • 「月のみ」「日数のみ」など、必要に応じた情報を抽出。
  • スケジュールの期間を管理する
    • プロジェクトの期間やタスクの進行状況を効率的に管理。

なぜDATEDIF関数が便利なのか?

手動で日付を計算するのは手間がかかるうえ、ミスが生じる可能性もあります。
DATEDIF関数なら、正確で効率的な計算が可能になるため、業務の時短やミス削減につながります。

ぜひ、さまざまな日付計算にDATEDIF関数を活用してみてください!

DATEDIF関数とは?基本的な使い方をご紹介

DATEDIF関数は、エクセルで2つの日付の間の差を「年」「月」「日」単位で簡単に計算できる便利な関数です。

経過年数や経過月数、日数を計算したいときに使いこなせると、作業効率が大幅に向上します。

DATEDIF関数の基本的な構文

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


DATEDIF関数の構文
スクロールできます
引数名説明
開始日計算を開始する日付2023/01/01
終了日計算を終了する日付2023/12/31
単位計算したい単位(”Y” = 年, “M” = 月, “D” = 日)"Y", "M", "D"

より詳しい情報は、Microsoft公式 – DATEDIF 関数を参照してみてください。

単位の詳細

スクロールできます
単位計算内容
"Y"開始日から終了日までの完全に経過した年数を返します
"M"開始日から終了日までの完全に経過した月数を返します
"D"開始日から終了日までのすべての日数を返します
"MD"開始日から終了日までの日数のみを返します(年数および月数を無視)
非推奨:特定の条件下で誤った結果を返す場合があります(詳細は下記「注意点」参照)。
"YM"開始日から終了日までの月数のみを返します(年数および日数を無視)
"YD"開始日から終了日までの日数のみを返します(年数を無視、月数は考慮)

この中でよく使用されるものは「Y」「M」「D」の3つになります。

「MD」単位が非推奨の理由

公式ドキュメントで非推奨とされる理由は以下の通りです。

非推奨の理由

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

公式ドキュメントでは、代替え手段として以下のような数式を推奨しています。

=終了日 - DATE(YEAR(終了日), MONTH(終了日), 1)

この数式では、終了日の月の初日を基準にして日数を計算することで、"MD" 単位の欠点を回避できます。

DATEDIF関数の使用例

「2024年1月1日から2024年12月31日までの期間」を計算する場合は以下の通りとなります。

スクロールできます
計算内容数式結果
経過年数=DATEDIF($B$1,$B$2,"Y")0年
経過月数=DATEDIF($B$1,$B$2,"M")11ヶ月
経過日数=DATEDIF($B$1,$B$2,"D")365日
DATEDIF関数の使用例

各単位の結果について : 注意ポイント

スクロールできます
単位内容
Y完全に経過した年数を返します2024年1月1日~2024年12月31日

0年 (翌年1月1日にならない限り経過年数は増えません)
M完全に経過した月数を返します2024年1月1日~2024年12月31日

11ヶ月 (12月は完全に経過していないため)
D開始日から終了日までの
すべての日数
をカウントします
2024年1月1日~2024年12月31日

365日 (閏年のため1年が365日となります)
注意ポイント
  • 「Y」「M」単位の結果は完全に経過した期間のみを計算するため、思った通りの結果にならないことがあります。
  • 「D」単位ではすべての日をカウントするため、開始日や終了日の設定が重要です。
スポンサーリンク

DATEDIF関数を使用する際に注意すべきポイント

DATEDIF関数を使用する際には、以下の点に注意してください。

これらのポイントを理解しておくことで、予期しないエラーや誤動作を防ぐことができます。

1. 開始日と終了日の順序

開始日」が「終了日」より後の場合、#NUM! エラーが発生します。

対策

日付順序を確認し、開始日が終了日より前になるよう設定してください。

2. サジェストに表示されない

DATEDIF関数は、Excelの関数補完リスト(サジェスト)に表示されません

その理由は、元々DATEDIF関数が古いソフトウェア「Lotus 1-2-3」との互換性を保つために提供されている特殊な関数だからです。

この関数は公式にはあまり目立たない形で存在しており、現在のExcelの他の関数と比べるとサポートが限定的です。
そのため、一部の特定条件下で誤った計算結果を返すことがあるため、補完リストには含まれていません。

対策

DATEDIF関数を使用する際は、関数名や構文を正確に覚え、手動で入力する必要があります。
補完機能が使えないため、以下のように直接記述してください。

以下は例です。

=DATEDIF(A1, B1, "Y")
  • A1 : 開始日
  • B1 : 終了日
  • “Y” : 単位(例: 経過年数を計算)

設定による計算結果のずれに注意

DATEDIF関数を使用する場合、Excelの設定が原因で計算結果がずれることがあります。

特に、「1904年から計算する」設定が有効になっていると、計算結果が4年分ずれてしまうことがあります。

修正方法
  1. 「ファイル」→「オプション」をクリック。
    ※ Alt + T → O の順にキーを押してオプションを開きます。
      その場合は、3. へスキップ
  2. 「詳細設定」タブで、「次のブックを計算するとき」のセクションを確認します。
  3. 「1904年から計算する」にチェックが付いていない場合、チェックを行います。
  • 注意点
    • この設定を変更すると、すでに入力済みの日付データがずれる可能性があります。
      DATEDIF関数を使用する前に設定を確認し、必要に応じて調整してください。

3. 単位の指定ミス

単位が正しく指定されていない場合、エラー(#NUM!)や誤った結果を返します。

対策

単位は正確な英字(ダブルクォーテーション付き)で入力してください。

  • "Y"(経過年数)
  • "M"(経過月数)
  • "D"(経過日数)

4. 「MD」単位の非推奨

「MD」単位は、開始日と終了日間の年数および月数を無視して日数を返します。

しかし、特定の条件下で誤った結果や負の値を返す場合があり、公式ドキュメントでも非推奨とされています。

対策

公式が推奨する代替手段を使用してください。

=終了日 - DATE(YEAR(終了日), MONTH(終了日), 1)

この数式では、終了日の月の初日を基準に計算することで、誤動作を回避します。

5. うるう年の計算に注意

DATEDIF関数はうるう年を正確に計算するよう設計されていますが、一部の特定の開始日と終了日で意図しない動作をする場合があります。

対策

うるう年(2024年)の2月29日を計算に含む場合、日数や月数の計算結果が不正確になるケースがあります。

計算結果に違和感を感じた場合、YEARMONTHDAY関数などを組み合わせて検証してください。

6. Excelのバージョン依存

古いバージョンのExcelではDATEDIF関数が正常に動作しない、または利用できない場合があります。

対策

計算結果に違和感を感じた場合、YEARMONTHDAY関数などを組み合わせて検証してください。

スポンサーリンク

DATEDIF関数を使わない場合の計算方法

DATEDIF関数が使用できない環境やエラーを避けたい場合、以下の方法で同様の計算が可能です。

経過年数を計算する方法

以下の式を使えば、経過年数を簡単に求められます。

=YEAR(終了日) - YEAR(開始日)
注意ポイント
  • 月や日を考慮したい場合、追加の条件が必要です。
  • 開始日と終了日を両方含めたい場合は、計算結果に「+1」を加える必要があります。

使用例 : 開始日が 2023/01/01、終了日が 2025/12/31 の場合

=YEAR(DATE(2025,12,31)) - YEAR(DATE(2023,1,1))

⇒ 結果「2」

経過月数を計算する方法

次の数式で、2つの日付間の月数を求められます。

=(YEAR(終了日) - YEAR(開始日)) * 12 + (MONTH(終了日) - MONTH(開始日))
注意ポイント

こちらも、開始日と終了日を含めたい場合は「+1」が必要になる場合があります。

さらに、日単位での月またぎを正確に処理する場合は追加の計算が必要です。

使用例 : 開始日が 2023/01/01、終了日が 2025/12/31 の場合

=(YEAR(DATE(2025,12,31)) - YEAR(DATE(2023,1,1))) * 12 + (MONTH(DATE(2025,12,31)) - MONTH(DATE(2023,1,1)))

⇒ 結果「35」

経過日数を計算する方法

こちらは単純に日付の引き算を使います。

=終了日 - 開始日
注意ポイント

この計算では、終了日を含むためには「+1」を加える必要があります。

使用例 : 開始日が 2023/01/01、終了日が 2023/12/31 の場合

=DATE(2023,12,31) - DATE(2023,1,1) + 1

⇒ 結果「365」

スポンサーリンク

DATEDIF関数の活用例|年齢・勤務年数・契約期間の計算方法

DATEDIF関数は日付の差を簡単に計算できる便利な関数です。

以下に、特に役立つ活用例を3つご紹介します。

年齢を計算する

生年月日から現在の年齢を自動で計算できます。

年齢の管理が必要な名簿や顧客リストなどで活躍します。

=DATEDIF(B1, TODAY(), "Y")
年齢の計算

勤務年数を計算する

入社日から現在の勤務年数と月数を計算します。

社員の勤続年数管理に便利です。

=DATEDIF(B1, TODAY(), "Y") & "年 " & DATEDIF(B1, TODAY(), "YM") & "ヶ月"
勤務年数を計算する

特定期間の月数を計算する

家賃契約やサブスクリプション契約の期間を月単位で計算したいときに便利です。

=DATEDIF(B1, B2, "M")
特定期間の月数を計算する
スポンサーリンク

この記事のまとめ

DATEDIF関数は、エクセルで日付計算を効率的に行うための便利な関数です。

この記事では、基本的な使い方から具体的な活用例、注意ポイント、そしてDATEDIF関数を使わない場合の代替方法までを詳しく解説しました。

以下のポイントをもう一度復習しましょう!

ポイントのおさらい

さらに学ぶために

DATEDIF関数の基本をマスターしたら、他のエクセル関数や自動化ツールも活用して、作業効率をさらに向上させましょう!

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「Python...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次