人事・総務の仕事では「入社日から今日までの勤続年数は何年何ヶ月か」「生年月日から満年齢は何歳か」といった、2つの日付の差を計算する場面が頻繁に出てきます。手計算やカレンダーを数えて求めることもできますが、社員数が多くなるほど非現実的です。この計算を1本の数式で済ませてくれるのがDATEDIF関数ですが、Excelの数式一覧やヘルプの目立つ場所には載っておらず、初めて使う人ほど「本当に存在する関数なのか」と不安になりがちです。

DATEDIFが「隠し関数」と呼ばれる理由

DATEDIFはセルに「=DATEDIF」と入力しても、SUMやVLOOKUPのように候補が自動で表示されません。これはDATEDIFがExcelの関数一覧・入力補完・ヘルプに正式には掲載されていない、いわゆる非公式(隠し)関数として扱われているためです。もともとLotus 1-2-3との互換性のために残された関数で、マイクロソフトは長年ドキュメント化していませんでした。とはいえ動作自体はExcel 2003以降のほぼすべてのバージョンで安定しており、実務で使う分には問題ありません。候補が出ないことに驚いて「使えない関数だ」と誤解しないよう、スペルミスなく手入力する関数だと覚えておくと安心です。

基本の書き方と3つの単位

DATEDIFは「開始日」「終了日」「単位」の3つの引数を取ります。単位を切り替えることで、年数・月数・日数のどれを求めたいかを指定します。

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

例:A1セルの入社日から今日までの満勤続年数を求める場合
=DATEDIF(A1, TODAY(), "Y")

"Y"

  • 満年数を求める
  • 勤続年数、満年齢の算出に使用

"M"

  • 満月数を求める
  • ローン返済月数などに使用

"D"

  • 日数を求める
  • 契約日数、経過日数などに使用

実務ではさらに「YM」(1年未満の月数)、「YD」(1年未満の日数)という単位もよく使われます。たとえば「勤続5年3ヶ月」のように年と月を両方表示したい場合は、"Y"単位と"YM"単位の2つのDATEDIFを組み合わせ、TEXT関数などで「5年3ヶ月」という文字列に整形します。

実務でのよくある使用シーン

人事・総務担当者であれば、社員名簿の入社日列からDATEDIFで勤続年数を自動計算し、永年勤続表彰や退職金計算の基礎資料に使うケースが典型的です。経理担当者であれば、契約開始日から満了日までの契約期間を月数で算出し、按分計算の根拠として使う場面があります。総務担当者であれば、従業員の生年月日から満年齢を計算し、社会保険の年齢要件(40歳、60歳、65歳など)の判定に利用することもよくあります。いずれも「今日の日付」を基準にする場合はTODAY関数と組み合わせるのがポイントです。

DATEDIFでよくあるエラー・トラブルと対処法

#NUM! エラー

DATEDIFで最もよく遭遇するエラーです。主な原因は次の2つです。

  • 開始日が終了日より後(未来)の日付になっている
  • 開始日または終了日のセルが、日付ではなく文字列として入力されている
例:=DATEDIF(A1,B1,"Y") でA1に「2027/1/1」、B1に「2026/9/20」が入っている(開始日の方が未来)

対処法として、まず数式バーで開始日・終了日の前後関係を確認してください。他システムから取り込んだ日付が文字列扱いになっているケースも多いため、セルが左寄せ表示になっていないか(=文字列扱いのサイン)も合わせてチェックしましょう。

「YM」単位で結果がマイナスになる・想定と違う

YM単位は「1年未満の月数」を求めるものですが、日にちの繰り上がり処理を誤解しているケースがあります。

例:開始日が「2025/8/31」、終了日が「2026/9/1」の場合、月末と月初の関係で想定と1ヶ月ずれることがある

月末日を開始日にすると、月をまたぐ計算で誤差が出やすくなります。厳密な日数管理が必要な場合は、"YM"単独ではなく"M"単位や"D"単位との併用で結果を検算することをおすすめします。

関数の候補が出ない・入力できているか不安になる

前述の通りDATEDIFは入力補完に表示されない仕様です。エラーではありません。

「=DATEDIF(」まで入力してもポップアップのヒントが出ないため不安になりますが、スペルミスなく最後まで入力しEnterを押せば正しく計算されます。心配な場合は一度セルに計算結果が表示されるか確認してから、他のセルにコピーして使いましょう。

初心者がつまずきやすいポイントとコツ

まとめ

DATEDIFは入力補完に出てこないため最初は戸惑う関数ですが、勤続年数・満年齢・契約期間といった「2つの日付の差」を求める場面では非常に頼りになります。単位を"Y""M""D""YM""YD"の中から目的に合わせて選び、開始日と終了日の前後関係さえ間違えなければ、#NUM!エラーに悩まされることもありません。TODAY関数と組み合わせて「今日時点」の年数を自動更新できるようにしておくと、名簿の更新作業もぐっと楽になります。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。

よくある質問

DATEDIFを入力しても候補が出てきません。使えない関数なのですか?
使える関数です。DATEDIFはExcelの入力補完(オートコンプリート)の候補一覧にわざと表示されない、いわゆる「隠し関数」です。=DATEDIFと最後までスペルミスなく手入力すれば、そのまま使用できます。
DATEDIFで#NUM!エラーが出るのはなぜですか?
多くの場合、開始日に終了日より後の日付が入っているのが原因です。DATEDIFは開始日が終了日より未来だとエラーになるため、2つの日付の前後関係を数式バーで確認してください。日付が文字列として入力されている場合も同様にエラーの原因になります。
満年齢と数え年、DATEDIFで計算できるのはどちらですか?
DATEDIFで計算できるのは満年齢です。誕生日を迎えているかどうかを日付単位で正確に判定して計算するため、人事・総務で使う「満年齢」「満勤続年数」の算出に向いています。数え年が必要な場合は別途1〜2を加える計算を行ってください。

関連記事

→ DATEDIFの数式を作ってみる ← 記事一覧に戻る