1,000人規模の従業員を抱える企業の経理部門では、毎年4月の昇給や賞職のタイミングで、全社員の「勤続年数」と「年齢」の正確な算出が求められます。筆者がかつて在籍していた大手商社の経理現場では、この計算にわずか1日のズレも許されませんでした。退職金の算定基礎となる勤続日数が1日ずれるだけで、支給額に数十万円の差が出るケースがあるからです。こうしたシビアな実務の現場で、15年にわたり一貫して頼りにしてきたのがDATEDIF関数です。
Excelの関数ライブラリやオートコンプリートには表示されない、いわば「隠し関数」でありながら、これほど実務に深く根付いている関数は他にありません。本稿では、単なる使い方の説明にとどまらず、経理・営業管理・人事といった具体的な業務シーンで、いかにして計算ミスを防ぎ、集計時間を短縮するかという実務家視点のノウハウを、筆者の経験を交えて紐解いていきます。
- 実務で必須となるDATEDIF関数での正確な年齢・期間計算の手法
- 人事評価や退職金計算でズレを許さない勤続年数の算出フロー
- 経理担当者が直面する月次決算での「減価償却」経過月数カウント術
- 営業リストの精度を上げる「ターゲット顧客」の年齢層別判定ロジック
- 入力ミスやデータ不備で発生するエラーメッセージの正体と回避策
- 業務効率を変える日付系ショートカットキーと表示形式の高度な併用
- Microsoft 365の最新機能とDATEDIF関数の使い分け基準
- 研修講師として必ず伝える「実務初心者が陥る」計算上の落とし穴
- Googleスプレッドシートとの互換性で見落としがちな挙動の差異
- 実務者の疑問を解消する「日付計算」の高度なFAQ
- 組織の意思決定を支える正確な日付データ管理の習慣
実務で必須となるDATEDIF関数での正確な年齢・期間計算の手法
実務において「年齢」を計算する際、多くの初心者は「(今日の日付 – 生年月日)/ 365」という数式を思い浮かべますが、これではうるう年の影響を無視することになり、正確な満年齢は出せません。DATEDIF 期間計算 年齢の算出において、最も信頼できるのがDATEDIF関数です。この関数は、2つの日付の間の期間を「年」「月」「日」という任意の単位で返してくれます。
DATEDIF関数の基本構文と「隠し関数」の性質
DATEDIF関数は、他の関数と異なり、セルに「=DATE…」と入力しても候補が表示されません。これは、Lotus 1-2-3との互換性を保つために用意された古い関数であることに由来しますが、最新のMicrosoft 365でも問題なく動作します。
基本構文は =DATEDIF(開始日, 終了日, 単位) です。第一引数の開始日には「生年月日」や「入社日」を、第二引数の終了日には「基準日」や「TODAY()」を指定します。
引数「単位」の指定で決まる計算結果のバリエーション
第三引数の「単位」には、ダブルクォーテーションで囲った特定の文字列を入力します。
- “Y”:満年数を返します(年齢計算の基本)。
- “M”:満月数を返します。
- “D”:日数を返します。
- “YM”:1年未満の月数のみを返します。
- “MD”:1ヶ月未満の日数のみを返します。

Microsoft公式ドキュメントでの位置づけ
DATEDIF関数については、Microsoftの公式サポートページでも解説されていますが、特定の条件下での計算に注意が必要である旨が記載されています。実務で利用する前に、一度は目を通しておくべきでしょう。
参照:Microsoftサポート:DATEDIF関数
ポイント: 単位を指定する際は必ず半角のダブルクォーテーション(”)で囲ってください。ここを忘れると #NAME? エラーが発生します。
人事評価や退職金計算でズレを許さない勤続年数の算出フロー
筆者が社内研修の講師を務める際、最も質問が多いのが「勤続○年○ヶ月」という表示の作り方です。人事部や総務部では、永年勤続表彰の対象者リストを作成する際にこのスキルが不可欠です。例えば、営業部の田中さん(入社日:2010/04/01)の2026年5月1日時点での勤続期間を出す場合、複数のDATEDIF関数を「&」で連結するテクニックを使います。
満年数と端数月数を組み合わせた表示形式の構築
「16年1ヶ月」といった形式で表示するには、年数を出すDATEDIFと、1年未満の月数を出すDATEDIFを組み合わせます。
=DATEDIF(B2, $C$1, "Y") & "年" & DATEDIF(B2, $C$1, "YM") & "ヶ月"
ここで、B2セルには入社日、C1セルには基準日が入力されている想定です。
勤怠管理表での実用例:営業部・田中さんの事例
実際の営業管理表では、社員番号「E-201」の田中さんのように、入社日からの経過日数が有給休暇の付与日数に直結します。

筆者の経験では、このように「&」でつなげた数式を一つのセルに詰め込みすぎると、後から修正が困難になります。実務では「年」「月」「日」の計算を別々の作業列で行い、最後に表示用のセルで結合させるのが、ミスを防ぐコツです。
退職金算定における「1ヶ月未満」の切り上げ処理
多くの日本企業の退職金規定では、「1ヶ月未満の端数は1ヶ月に切り上げる」というルールが存在します。この場合、DATEDIFの “MD” 単位で端数日数を判定し、IF関数で1ヶ月足すという処理が必要になります。研修で教えていると、この「規定に合わせた微調整」でつまずく受講生が多いのですが、こここそがExcelスキルの見せ所です。
経理担当者が直面する月次決算での「減価償却」経過月数カウント術
経理の現場では、年齢計算よりも「資産の経過月数」の計算にDATEDIFを多用します。例えば、製造部で購入した機械装置(資産番号:M-5001、取得日:2023/10/15)の、決算月までの経過月数を算出する場合です。定額法による減価償却費の月割計算では、1ヶ月の数え方が決算数値に直結します。
減価償却費の月割計算への応用シナリオ
取得日から決算日までの月数を出す際、単純に「”M”」単位を使うと、開始日と終了日の日付の前後関係によって、期待した月数より1少ない結果が出ることがあります。
筆者の経験では、取得日が月末近くの場合、DATEDIFは「満月数」をカウントするため、数日の差で1ヶ月分が計算から漏れてしまうトラブルをよく見かけます。これを回避するためには、取得日を「EOMONTH関数」で月初または月末に正規化してからDATEDIFにかけるという工夫が必要です。
予算実績比較における「経過月ウェイト」の算出
年度予算の進捗を管理する際、年間の予算額をその時点の経過月数で割って「現時点でのあるべき数値」を出すことがあります。
=年間予算 / 12 * DATEDIF(年度開始日, 当月末, "M")
このような数式を営業部や総務部の予算管理シートに組み込んでおくことで、予算消化のペースが適正かどうかを瞬時に判定できます。
経費精算システムの不備を補完する一括計算
古い経費精算システムを使用している企業では、定期代の払い戻し計算などが手動で行われていることがあります。15年の実務の中で、筆者はこうした手作業をExcelのDATEDIF一発で自動化したことで、経理チームの残業を月10時間削減したことがあります。システムを疑い、Excelで検算する姿勢が、正確な月次決算を支えます。
注意点: 減価償却の計算では、税法上の「月数の数え方」を事前に確認してください。初月算入なのか、それとも日割なのかによって、DATEDIFの使い方が変わります。
営業リストの精度を上げる「ターゲット顧客」の年齢層別判定ロジック
マーケティング部や営業推進部において、顧客リストの鮮度は生命線です。特に「DATEDIF 期間計算 年齢」を活用して、ターゲットとなる顧客層を抽出する作業は、キャンペーンの成否を分けます。顧客管理番号「C-998」の佐藤さんの生年月日から、現在の年齢を出し、さらに「30代」「40代」といったセグメントに分ける手法を解説します。
誕生日から「還暦」や「成人」を自動検知する仕組み
特定の年齢に達した顧客にだけ特別なDMを送る場合、DATEDIFとIF関数を組み合わせます。
=IF(DATEDIF(生年月日, TODAY(), "Y")=60, "還暦対象", "")
このように設定しておけば、ファイルを開くたびにその日の「還暦対象者」が自動でフラグ立てされます。
不動産業界や保険業界での実用事例
不動産売買や生命保険の営業では、顧客の年齢がローン審査や保険料に直結します。
例えば、住宅ローン借入時の「完済時年齢」の計算です。
=DATEDIF(今日の日付, 生年月日, "Y") + ローン期間
この数値が80歳を超えるようであれば、提案内容を見直す必要があります。実務でよく見かけるのは、こうした計算を営業マンが電卓で行い、顧客の前でミスをしてしまうケースです。Excelでツール化しておけば、信頼を勝ち取ることができます。
年齢層別集計をピボットテーブルで可視化する
算出した年齢を基に、VLOOKUP関数で「年齢層マスタ」を参照し、20代、30代といった区分を付与します。そのデータをピボットテーブルに放り込めば、どの年代が最も売上に貢献しているかが一目瞭然になります。

入力ミスやデータ不備で発生するエラーメッセージの正体と回避策
DATEDIF関数を使っていて、最も遭遇するのが「#NUM!」エラーです。これは、関数の仕様として「開始日 ≦ 終了日」でなければならないという厳格なルールがあるためです。経理の現場で、過去に遡って遡及修正を行う際、日付の入力を前後させてしまうと、このエラーがシート中を埋め尽くすことになります。
開始日と終了日の逆転を防ぐIF関数の活用術
エラーを未然に防ぐには、数式を以下のようにガードします。
=IF(A2 > B2, "入力エラー", DATEDIF(A2, B2, "Y"))
筆者の経験では、この一工夫を怠ったために、提出用の資料にエラーが残ったまま部長の元へ行ってしまい、大目玉を食らった苦い経験があります。特に大量のデータを処理する際は、エラー回避のロジックは必須です。
文字列として入力された日付のシリアル値変換
他部署から送られてきたExcelデータで、「2024.05.13」や「20240513」といった形式で日付が入力されていることがあります。これらは「文字列」であり、DATEDIF関数は受け付けてくれません。
このような場合は、DATE関数やLEFT/MID/RIGHT関数を駆使して「シリアル値」に変換する必要があります。
=DATE(LEFT(A2, 4), MID(A2, 5, 2), RIGHT(A2, 2))
研修で教えていると、この「日付に見えるけれど日付ではないデータ」の扱いで数時間ハマる初心者が後を絶ちません。
「#VALUE!」エラーが出る意外な原因
日付の入ったセルの中に、目に見えない「スペース」が混じっている場合、DATEDIFは計算を拒否し #VALUE! を返します。
実務でよく見かけるのは、基幹システムからCSV出力したデータに、セル幅を合わせるための半角スペースが含まれているケースです。TRIM関数や「置換(Ctrl+H)」でスペースを一掃してから計算に挑みましょう。

業務効率を変える日付系ショートカットキーと表示形式の高度な併用
DATEDIF関数をマスターしても、日付の入力そのものに時間がかかっていては、実務家として失格です。15年の実務で体に叩き込んだ、日付操作を高速化するテクニックを紹介します。
Ctrl + ;(セミコロン)で今日の日付を秒速入力
売上管理表に「処理日」を記載する際、いちいち「2026/05/13」と打つ必要はありません。
Ctrl + ; を押せば、その瞬間のシステム日付がセルに入力されます。
筆者の経験では、1日100件の入力作業がある場合、このショートカットだけで年間数時間の節約になります。
ユーザー定義書式で「○年」を自動表示させる
DATEDIFの結果が出るセルに、直接「年」という文字を表示させたい場合、数式で & "年" とつなげる方法もありますが、これでは数値として計算に使えなくなります。
正解は、セルの書式設定(Ctrl+1)から「ユーザー定義」を選択し、0"年" と設定することです。これにより、見た目は「16年」ですが、中身は「16」という数値のままなので、平均年齢の算出などにそのまま利用できます。
実務で役立つ日付の「連続データ」作成技
カレンダー形式の管理表を作る際、日付を1つずつ入力していませんか?
右クリックでフィルハンドルをドラッグすれば、「月単位」や「営業日単位」での連続データ作成が可能です。経理の資金繰り表作成など、日付を横に並べる業務ではこの操作が必須スキルとなります。
ポイント: ショートカットキーは「知っている」だけでは無意味です。実務の現場で意識的に使い、指が勝手に動くまで繰り返してください。
Microsoft 365の最新機能とDATEDIF関数の使い分け基準
最新のExcel(Microsoft 365)では、DATEDIF以外にも日付を扱う便利な機能が増えています。しかし、15年選手の実務家から見れば、依然としてDATEDIFが「主役」であることに変わりはありません。なぜ今、他の関数ではなくDATEDIFを使うべきなのか、その比較基準を明示します。
YEARFRAC関数との計算精度の違い
YEARFRAC関数は =YEARFRAC(開始日, 終了日, 基準) で、1年を1とした時の割合を小数で返します。
資産運用や金融商品の利息計算など、より緻密な「期間の重み」を出すには適していますが、一般的な「満年齢」や「勤続年数」を出すには、端数処理が面倒なYEARFRACよりもDATEDIFの方が圧倒的に使い勝手が良いです。
DAYS関数や単なる引き算との使い分け
単純な「日数」だけを知りたいのであれば、=終了日 - 開始日 という引き算で十分です。
しかし、実務で求められるのは「○年○ヶ月」という、人間の感覚に即した区切りです。この「単位の変換」を自動で行ってくれるのがDATEDIFの唯一無二の価値です。
最新の「TEXT関数」による曜日表示との組み合わせ
DATEDIFで算出した「契約更新日」の隣に、TEXT関数を使って曜日を表示させるテクニックも実務で多用します。
=TEXT(A2, "aaaa")
これにより、更新日が土日に重なっていないかを視覚的にチェックでき、営業担当者へのアラートとして機能します。
参照:Microsoft Learn:DATEDIFの計算結果に関するトラブルシューティング
研修講師として必ず伝える「実務初心者が陥る」計算上の落とし穴
社内研修で講師をしていると、受講生が必ずと言っていいほどハマる「DATEDIFの罠」がいくつかあります。特に「MD」単位の不具合については、Microsoft公式も注意を促しているほど有名ですが、意外と知られていません。
「MD」単位はMicrosoftも使用を推奨していない事実
DATEDIFの第三引数に “MD”(月を除いた日数)を指定すると、特定の月(2月から3月にかけてなど)で計算結果がマイナスになったり、おかしな数値を返したりすることがあります。
筆者の経験では、この不具合を知らずに「○年○ヶ月○日」という精密な計算ツールを作ってしまい、役員会への提出資料で数字が合わず、大恥をかいたマネージャーを見たことがあります。精密な日数計算が必要な場合は、開始日から「満月数」を足した日付を算出し、そこからの差分を出す別のロジックを組むべきです。
2月29日生まれの人の年齢はいつ増えるのか
うるう年の2月29日生まれの人の年齢計算は、実務上の「法律」や「規定」に左右されます。
日本の法律(年齢計算ニ関スル法律)では、「誕生日の前日の24時」に加齢すると定められています。DATEDIF関数はこの法律に準拠した挙動をしますが、企業の独自規定で「誕生日当日」としている場合は、数式に +1 をするなどの微調整が必要になることがあります。
「開始日」を含めるか含めないかの「片端・両端」問題
実務で最も揉めるのが「入社初日を1日目と数えるか」という問題です。
DATEDIF関数はデフォルトで「片端入れ(開始日は数えない)」の動きをします。
例えば、2024/05/01から2024/05/02までを計算すると「1日」と出ます。
しかし、現場の感覚で「2日間」とカウントしたい場合は、=DATEDIF(開始日, 終了日, "D") + 1 とする必要があります。この +1 を忘れるだけで、全従業員の有給休暇日数が1日ずつズレるという大惨事につながります。

Googleスプレッドシートとの互換性で見落としがちな挙動の差異
近年、多くの企業でGoogleワークスペースへの移行が進んでいますが、ExcelのDATEDIF関数をそのままスプレッドシートに貼り付けると、思わぬ落とし穴にハマることがあります。
クラウド共有時の再計算タイミングのズレ
Googleスプレッドシートで TODAY() を使ったDATEDIFの数式を入れている場合、シートを開いたタイミングではなく、ブラウザのキャッシュや共有設定によって、日付が更新されていないように見えるケースがあります。
筆者の経験では、共有されたシートを複数の部署で同時に閲覧している際、ある人の画面では「30歳」、別の人の画面では「29歳」と表示が分かれてしまい、会議が紛糾した例があります。
Excelブックをブラウザ版で開いた時のエラー
デスクトップ版のExcelで作った高度なDATEDIFの連結数式が、ブラウザ版Excel(Excel Online)やスプレッドシートで開くと、セルの幅が足りずに「#######」と表示されたり、一部の単位指定が正しく認識されなかったりすることがあります。
不特定多数に配布するツールを作るなら、できるだけシンプルな数式に分解しておくのが、15年の実務から得た教訓です。
CSV出力時の日付フォーマット崩れ
スプレッドシートからDATEDIFの結果をCSVで書き出し、別の基幹システムにインポートする際、セルの書式設定で「年」などを付けていると、システム側でエラーを吐くことがあります。データ連携を前提とするなら、DATEDIFの出力は「純粋な数値」に徹するべきです。
ポイント: クラウド環境で使う場合は、再計算のトリガー設定(設定 > 計算 > 再計算)を確認し、「変更時と毎時」に設定しておくことを推奨します。
実務者の疑問を解消する「日付計算」の高度なFAQ
ここでは、筆者が実際に研修や実務の現場で受けた、より高度でマニアックな質問に答えていきます。
Q. 満年齢ではなく「数え年」を出したいのですが?
A. DATEDIFの結果に +1 するのが最も早いですが、正確には「その年の誕生日を迎えたかどうか」を判定するロジックが必要です。ただ、現代の実務(保険・統計)ではほとんどが満年齢ですので、特殊な寺院や伝統行事の管理でない限り、標準のDATEDIFで事足ります。
Q. 休日(土日祝日)を除いた「実稼働日数」で期間を出せますか?
A. DATEDIF単体では不可能です。その場合は NETWORKDAYS関数 を使いましょう。
=NETWORKDAYS(開始日, 終了日, 祝日リスト)
これにより、土日と指定した祝日を除いた、純粋な「営業日数」が算出できます。DATEDIF 期間計算 年齢の概念とは異なりますが、プロジェクト管理ではこちらの方が重宝されます。
Q. 1900年より前の日付を計算したい場合は?
A. 実務上、明治生まれの顧客データを扱う際などに問題になります。Excelのシリアル値は1900年1月1日からしか扱えないため、DATEDIFも機能しません。
この場合、VBA(マクロ)を使うか、あるいは西暦を100年分足して計算し、後から調整するといったトリッキーな手法が必要になります。15年のキャリアでも数回しか遭遇しないレアケースですが、歴史ある企業の顧客データ移行では注意が必要です。

組織の意思決定を支える正確な日付データ管理の習慣
DATEDIF関数を使いこなすことは、単に計算式を覚えることではありません。その背後にある「データの正確性」を担保し、組織が正しい判断を下せるようにすることに本質があります。最後に、明日から実務に取り入れるべき3つのステップをまとめます。
- 日付データのクレンジングを徹底する:計算を始める前に、全データが「シリアル値」になっているかを確認してください。見た目に騙されず、セルの書式を「標準」に戻して、5桁の数字になれば合格です。
- 基準日を「セル参照」にする:
TODAY()は便利ですが、過去の特定の時点での年齢が必要になることもあります。基準日を入力する専用のセル(例:$C$1)を用意し、そこを絶対参照する癖をつけましょう。 - 数式を「検証」するステップを設ける:作成したシートの数行分だけでいいので、手計算やカレンダーで検算してください。特に「+1日」が必要なケースかどうか、現場のルールと照らし合わせることが、プロの実務家の仕事です。
15年間の実務と研修講師としての経験から断言できるのは、Excelのスキルは「知識の量」ではなく「使いどころの判断」で決まるということです。DATEDIF関数という、少し気難しいけれど非常に有能なツールを味方につけることで、あなたの日常業務はより正確で、より価値のあるものに変わるはずです。エラーを恐れず、まずは手元の従業員リストや顧客データで、この「隠れ関数」の威力を試してみてください。


コメント