「この人の今の年齢は何歳だろう?」「入社から何年何ヶ月経ったかな?」
仕事やプライベートで、2つの日付の間の期間を計算したい場面は多いですよね。そんな時に非常に便利なのがExcelの「DATEDIF(デイトディフ)関数」です。
しかし、この関数にはひとつ大きな特徴があります。それは、「関数の挿入」ボタンや関数ライブラリから検索しても出てこないということ。初心者の方の中には、「使い方は調べたけれど、どこにあるのか見つからない!」と戸惑った方も多いのではないでしょうか。
実はDATEDIF関数は、セルに直接入力して使う関数なのです。
この記事では、DATEDIF関数の基本的な書き方から、目的別の単位の使い分け、そして使う際に気をつけたい注意点まで、初心者の方にもわかりやすく解説します。
DATEDIF関数とは?
DATEDIF関数は、2つの日付(シリアル値)の差を求め、その期間を「年数」「月数」「日数」などの好きな単位で表示できる関数です。
名前の由来は、「DATE(日付)」と「DIF(Difference:差分)」を組み合わせたもの。その名の通り、日付の差分を計算するためのツールです。
特に、生年月日から現在の年齢を算出したり、入社日から今日までの勤続年数を計算したりといった、実務的な期間算出にとても役立ちます。
DATEDIF関数の基本書式と書き方
DATEDIF関数を使う際は、以下の書式に従って入力します。
=DATEDIF(開始日, 終了日, "単位")
それぞれの引数(カッコの中に入れる情報)について詳しく見ていきましょう。
1. 開始日
計算の基準となる「前の日付」を指定します。年齢を出す場合は「生年月日」、勤続年数を出す場合は「入社日」が入っているセルを選択します。
2. 終了日
期間の終わりとなる「後の日付」を指定します。現在時点での期間を知りたい場合は、今日の日付が入ったセルを指定するか、後述する「TODAY関数」を組み合わせて使います。
3. 単位
ここが一番のポイントです。どのような形式で結果を表示させたいかを、ダブルクォーテーション(" ")で囲んで指定します。主な単位は以下の通りです。
| 単位 | 意味 | 計算内容 |
|---|---|---|
| "Y" | 年 | 2つの日付の間の「満年数」を求めます。年齢計算に最適です。 |
| "M" | 月 | 2つの日付の間の「満月数」を求めます。 |
| "D" | 日 | 2つの日付の間の「日数」を求めます。 |
| "YM" | 月(年を無視) | 年数を無視して、1年未満の「端数の月数」だけを求めます。 |
| "MD" | 日(月・年を無視) | 年数と月数を無視して、1ヶ月未満の「端数の日数」だけを求めます。 |
入力時の重要な注意点
前述の通り、DATEDIF関数は「関数の挿入」ダイアログボックスに候補が表示されません。そのため、`=DATEDIF(` までをすべて手入力する必要があります。スペルミスがないよう注意して入力しましょう。
【実践】目的別・DATEDIF関数の活用シーン
実際にどのように数式を組めばいいのか、具体的によく使われるシーンで解説します。
ケース1:現在の「年齢」を計算したい
生年月日がセルC3に入っている場合、今日時点での年齢を出す数式は以下のようになります。
=DATEDIF(C3, TODAY(), "Y")
ここで使っている `TODAY()` は、Excelファイルを開いた時点の「今日の日付」を自動的に取得してくれる関数です。これを使うことで、毎日数式を書き直す必要がなくなり、常に最新の年齢が表示されるようになります。
ケース2:勤続年数や会員期間を計算したい
入社日(開始日)がセルG6にあり、基準となる終了日がセルH3に入っている場合、年数を出すにはこう書きます。
=DATEDIF(G6, H3, "Y")
もし、リスト形式で大量のデータがある場合は、終了日のセルを「絶対参照」にすることが大切です。セルH3を選択したあとに `F4` キーを押し、`$H$3` という表記にすることで、数式を下にコピー(フィルハンドルでドラッグ)しても参照先がズレることなく、全員分の期間を瞬時に計算できます。
ケース3:「〇年〇ヶ月〇日」と詳細に表示したい
「単に年数だけではなく、もっと詳しく期間を表示したい」という場合は、複数のDATEDIF関数を組み合わせて繋げます。
例えば、以下のように数式を組み合わせます。
- 年の部分:`DATEDIF(開始日, 終了日, "Y")`
- 月の部分:`DATEDIF(開始日, 終了日, "YM")`
- 日の部分:`DATEDIF(開始日, 終了日, "MD")`
これらを「&」記号でつなげることで、「30年5ヶ月10日」といった詳細な期間表示が可能になります。
DATEDIF関数を使うときに知っておきたい注意点とエラー対策
非常に便利なDATEDIF関数ですが、いくつか注意すべき点があります。
1. 日付の前後関係に注意
DATEDIF関数は必ず「開始日(前)」を先に、「終了日(後)」を後に指定しなければなりません。もし終了日に古い日付を指定してしまうと、エラーが表示されます。
2. 「"MD"」引数の制限について
Microsoftのサポート情報によると、単位に `"MD"` を指定した場合、特定のシナリオで誤った計算結果を返したり、負の値やゼロを返すことがあるという既知の問題があります。そのため、厳密な日数計算が必要な場合は注意が必要です。
回避策として、1か月が過ぎた後の残りの日数を計算したい場合は、DATE関数などを用いてその月の1日を算出し、最終日から減算する方法などが検討されます。
3. 閏(うるう)年の計算
閏年の2月29日が開始日となった場合、計算結果が意図しない形(例:1年の経過が3月1日計算になるなど)になることがあります。閏年に関わる計算を行う際は、結果が正しいか慎重に確認しましょう。
4. 単なる「日数」を知りたいだけの場合
もし「年数」や「月数」は不要で、単純に合計で何日離れているかを知りたいだけなら、実は関数を使う必要はありません。 Excelでは日付が「シリアル値」という数値で管理されているため、単純に `=終了日 – 開始日` と引き算をするだけで、その間の日数を求めることができます。
まとめ
DATEDIF関数は、一度書き方を覚えてしまえば、年齢計算や勤続年数の管理といった日々のお仕事を劇的に効率化してくれる強力なツールです。
ポイントをまとめると以下の通りです。
- 入力方法は直接入力のみ。(関数の挿入一覧には出てこない)
- 基本書式は `=DATEDIF(開始日, 終了日, "単位")`。
- 年齢を出したいなら単位は `"Y"`。
- 今日の日付を使いたいなら `TODAY()` 関数を組み合わせる。
- 大量のデータを処理するなら「絶対参照($マーク)」を活用する。
まずは簡単な年齢計算から試して、Excelでの日付操作に慣れてみてくださいね。
ピックアップ記事



