【VBAリファレンス】Excel実務の必須テクニック:DATEDIF関数で期間を「○年○か月」と完璧に表示する方法

スポンサーリンク

概要:Excelで「期間」を扱う際の最適解

Excelで業務を行っていると、契約期間の算出、勤続年数の計算、あるいはプロジェクトの開始から終了までの経過期間など、「期間」を扱う場面に頻繁に遭遇します。特に「〇年〇か月」という形式で正確に表示したい場合、単純な引き算や数値の割り算では、うるう年や月ごとの日数の違いといった「暦の壁」に阻まれ、計算が非常に煩雑になります。

ここで登場するのが、Excelの隠れた名関数「DATEDIF(デートディフ)」です。この関数は、2つの日付の間の差を、年、月、日単位で正確に算出するために設計されています。しかし、多くのユーザーが「DATEDIFは非推奨の関数ではないか?」という噂や、引数の指定ミスによるエラーに頭を悩ませています。本記事では、このDATEDIF関数を正しく使いこなし、実務で「○年○か月」と自動表示させるための決定版テクニックを、プロの視点から徹底解説します。

詳細解説:DATEDIF関数がなぜ最強なのか

DATEDIF関数は、他の関数と異なり、Excelの「関数挿入」ダイアログボックスには表示されません。これはLotus 1-2-3との互換性のために残された関数であるためですが、その計算ロジックは極めて強力です。

基本的な構文は以下の通りです。
=DATEDIF(開始日, 終了日, 単位)

ここで重要なのが「単位」の指定です。「Y」は期間内の満年数、「YM」は年を無視した月数、「MD」は月を無視した日数を出力します。今回求めたい「○年〇か月」を表示するためには、これらを組み合わせて文字列として連結する必要があります。

なぜDATEDIFを使うべきなのか。それは、YEAR関数やMONTH関数を用いた計算では、月をまたぐ際の端数処理や、年をまたぐ計算が非常に複雑になるからです。DATEDIFは「その期間に何回その単位が経過したか」を直接算出するため、論理的ミスが起きにくいのです。

サンプルコード:数式の実装と解説

それでは、実務でそのまま使える数式を紹介します。例えば、A2セルに「開始日」、B2セルに「終了日」が入っていると仮定します。

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

この数式の仕組みを分解します。

1. DATEDIF(A2, B2, “Y”):開始日から終了日までの「満年数」を計算します。
2. & “年”:計算された数値の後ろに「年」という文字列を結合します。
3. DATEDIF(A2, B2, “YM”):開始日から終了日までの期間において、1年に満たない「余りの月数」を計算します。
4. & “か月”:最後に「か月」という文字列を結合します。

この数式であれば、例えば「2023年1月1日」から「2024年3月15日」までの期間は「1年2か月」と正確に算出されます。

さらに、応用として「0年」や「0か月」を表示したくない場合や、特定の条件でエラーを出さないようにするための工夫も必要です。

=IF(A2>B2, "日付異常", DATEDIF(A2, B2, "Y") & "年" & DATEDIF(A2, B2, "YM") & "か月")

このようにIF関数を組み合わせることで、開始日が終了日よりも後の日付になっている場合などの入力ミスを未然に防ぐことができます。

実務アドバイス:プロが教える「陥りがちな罠」と回避策

現場でDATEDIF関数を使う際に、必ず注意すべきポイントが3つあります。

1. 日付データの整合性
Excelにおいて「日付」は「シリアル値」という数値で管理されています。もしA2セルやB2セルが「文字列」として入力されていると、DATEDIFは#VALUE!エラーを返します。入力データが日付形式であることを確認するため、セルに「2023/04/01」のようにスラッシュで入力されているか、あるいはVALUE関数で数値化できているかを必ずチェックしてください。

2. 終了日の扱い
DATEDIF関数は「終了日を含めるかどうか」で迷うことがありますが、基本的には「終了日までの期間」を算出します。もし「終了日を含めた期間」を計算したい場合は、数式内のB2を「B2+1」とする必要があります。契約更新日などの計算では、この1日の差が法的なトラブルに繋がることもあるため、要件定義を明確にしておくことが重要です。

3. メンテナンス性
数式が長くなると、後から修正するのが難しくなります。もし「○年○か月」という表示を、特定のセルではなく、セル内の表示形式だけで完結させたいという要望があるかもしれませんが、残念ながらExcelの標準的な表示形式機能(ユーザー定義)では「経過年数」を自動算出することはできません。したがって、このDATEDIFを用いた計算式は、別セルに計算結果を出すという運用ルールを徹底するのが、最もミスが少ない管理手法です。

まとめ:DATEDIFをマスターして業務効率を最大化する

DATEDIF関数は、一見すると古い関数のように思えるかもしれませんが、そのシンプルさと計算の正確さは、現代のExcel業務においても代替不可能な価値を持っています。

今回の「○年〇か月」という表示は、人事労務やプロジェクト管理、在庫管理など、あらゆるビジネスシーンで求められる基本スキルです。この数式をマスターすることで、手計算によるミスをゼロにし、データの信頼性を飛躍的に高めることができます。

最後に、もし頻繁にこの計算を行うのであれば、ユーザー定義関数(VBA)を作成し、`=GetPeriod(A2, B2)` のように自作関数化してしまうのも一つの手です。しかし、まずは今回紹介したDATEDIFの標準的な書き方を完全に理解し、どんな環境でも即座に使えるようにしておくことが、Excelの達人への第一歩となります。

今日からあなたのExcelシートで、この数式をぜひ試してみてください。正確なデータ管理が、あなたの業務の質を確実に底上げします。

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