Excel関数で年齢計算する方法をお探しですね。

広告

生年月日から年齢を自動計算!ExcelのDATEDIF関数で年齢・勤続年数を求める方法

社員名簿や顧客リストをExcelで管理していると、「生年月日から今の年齢を出したい」「入社日から勤続年数を○年○ヶ月で表示したい」という場面がよくありますよね。

年齢や勤続年数は時間がたつと変わっていくので、手入力で更新していると、どうしてもミスや更新漏れが起こりがちです。

この記事では、ExcelのDATEDIF関数を使って、生年月日から現在の年齢を計算する方法と、入社日から勤続年数を「○年○ヶ月」で表示する方法を、初心者の方にも分かりやすく解説していきます。

1. DATEDIF関数って何?どんなときに使うの?

DATEDIF関数は、2つの日付の間にどれくらいの期間があるかを、年数・月数・日数などの単位で計算できる関数です。

たとえば、生年月日から今日までの満年齢を出したり、入社日から今日までの勤続年数を計算したりできます。

社員名簿、会員管理表、契約管理表、園児や生徒の年齢管理など、日付をもとに管理する表ではとても便利な関数です。

年齢や勤続年数は毎年(あるいは毎月)変わっていく情報なので、直接入力するよりも、元になる生年月日や入社日を入力しておいて、DATEDIF関数で自動計算するほうが実務では安全です。

DATEDIF関数の基本的な書き方

DATEDIF関数の基本的な形は、次のようになります。

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

**開始日**には、生年月日や入社日など、期間の起点となる日付を指定します。

**終了日**には、今日の日付や特定の基準日を指定します。

**単位**には、年数を求める「Y」、月数を求める「M」、日数を求める「D」などを指定します。

たとえば「満年齢」を求めたいときは単位に「”Y”」を使い、1年に満たない余りの月数を知りたいときは「”YM”」を使います。

単位は必ず半角のダブルクォーテーション(”)で囲む必要があります。

これを忘れるとエラーになるので注意しましょう。

DATEDIF関数のちょっと変わったところ

DATEDIF関数には少し特殊な点があります。

それは、**Excelの関数一覧や入力候補に表示されない**ことです。

これは、DATEDIF関数が古い表計算ソフトとの互換性を保つために残されている関数だからだと言われています。

なので、普通の関数のように候補から選ぶのではなく、セルや数式バーに直接「=DATEDIF(」と入力して使います。

候補に出てこないからといって使えないわけではないので、関数名のつづりを間違えずに入力することが大切です。

2. 生年月日から現在の年齢を計算する基本の式

生年月日から現在の年齢を求めるには、開始日に生年月日、終了日に今日の日付、単位に満年数を表す「”Y”」を指定します。

たとえば、A2セルに生年月日が入力されていて、B2セルに現在の年齢を表示したい場合は、B2セルに次の数式を入力します。

“`
=DATEDIF(A2, TODAY(), “Y”)
“`

**TODAY関数**は、今日の日付を自動で取得する関数です。

DATEDIF関数の終了日にTODAY()を指定すると、ファイルを開いた日や再計算された時点の日付を基準に、現在の満年齢が自動で計算されます。

つまり、生年月日さえ正しく入力しておけば、誕生日を迎えたタイミングで年齢も自動的に更新されるんです。

社員名簿や会員リストのように人数が多い表では、1人ずつ年齢を手入力する必要がなくなるので、更新作業がとても楽になります。

年齢の後ろに「歳」を付けて表示する方法

年齢の後ろに「歳」を付けて表示したい場合は、DATEDIF関数の結果に文字列を連結します。

Excelでは「&」を使うことで、計算結果と文字をつなげることができます。

たとえば、A2セルの生年月日から現在の年齢を求めて、「35歳」のように表示したい場合は、次のように入力します。

“`
=DATEDIF(A2, TODAY(), “Y”) & “歳”
“`

「○歳○ヶ月」のように詳しく表示する方法

さらに「○歳○ヶ月」のように詳しく表示したい場合は、満年齢を求める「Y」と、1年未満の月数を求める「YM」を組み合わせます。

A2セルに生年月日がある場合は、次の式で「35歳4ヶ月」のような表示ができます。

“`
=DATEDIF(A2, TODAY(), “Y”) & “歳” & DATEDIF(A2, TODAY(), “YM”) & “ヶ月”
“`

ここで重要なのは、**「M」と「YM」の違い**です。

– **「M」**:開始日から終了日までの総月数を返します
– **「YM」**:満年数を除いた余りの月数を返します

たとえば、35年4ヶ月経過している人に対して「M」を使うと、424ヶ月のような総月数になります。

でも、年齢表示で知りたいのは「35歳4ヶ月」の「4ヶ月」の部分なので、「YM」を使う必要があります。

この違いを理解しておくと、勤続年数の「何年何ヶ月」表示でも迷わず数式を作れます。

3. 入社日から勤続年数を「何年何ヶ月」で表示する方法

勤続年数を計算する場合も、考え方は年齢計算とほぼ同じです。

開始日に入社日、終了日に今日の日付、単位に「Y」を指定すれば、現在の満勤続年数が求められます。

たとえば、A2セルに入社日が入力されていて、B2セルに勤続年数を年数だけで表示したい場合は、次の数式を使います。

“`
=DATEDIF(A2, TODAY(), “Y”)
“`

この式では、入社日から今日までに満何年経過したかが表示されます。

たとえば、入社して3年11ヶ月の場合は「3」と表示されます。

まだ4年にはなりません。

これは「満年数」を求めているためです。

勤続年数を評価や手当の基準に使う場合、満年数で見るのか、総月数で見るのか、あるいは「○年○ヶ月」のように表示するのかを事前に決めておくことが大切です。

勤続年数を「○年○ヶ月」で表示する

勤続年数を「○年○ヶ月」で表示したい場合は、年齢の詳細表示と同じように、「Y」と「YM」を組み合わせます。

A2セルに入社日がある場合、B2セルには次の数式を入力します。

“`
=DATEDIF(A2, TODAY(), “Y”) & “年” & DATEDIF(A2, TODAY(), “YM”) & “ヶ月”
“`

この式では、前半のDATEDIF関数で満年数を求めて、後半のDATEDIF関数で年数に満たない余りの月数を求めています。

たとえば、入社日から今日までが7年8ヶ月であれば、「7年8ヶ月」と表示されます。

単に「M」で月数を求めると「92ヶ月」のような総月数になるので、「何年何ヶ月」という人が読みやすい表示にしたい場合は「YM」を使うのがポイントです。

人事や労務の資料では、総月数よりも「○年○ヶ月」のほうが直感的に分かりやすく、確認作業もしやすくなります。

特定の日時点での勤続年数を求める方法

指定した基準日時点の勤続年数を求めたい場合は、TODAY()の代わりに基準日が入力されたセルを指定します。

たとえば、E1セルに「2026/4/1」という基準日を入力して、A2セルの入社日からその時点の勤続年数を求めるなら、次のようにします。

“`
=DATEDIF(A2, $E$1, “Y”) & “年” & DATEDIF(A2, $E$1, “YM”) & “ヶ月”
“`

ここで「$E$1」としているのは、オートフィルで下の行に数式をコピーしても、基準日のセルがずれないようにするためです。

これを**絶対参照**と呼びます。

社員一覧で複数人の勤続年数を一括計算する場合、基準日セルを固定しておかないと、コピーしたときに参照先がE2、E3とずれてしまい、正しい結果が得られません。

実務で使う表では、基準日を1か所に入力して、そこを絶対参照で固定する形にしておくと、後から基準日を変更するだけで全員分を再計算できるので便利です。

4. DATEDIF関数でよくある失敗と実務での注意点

日付がちゃんと「日付」として認識されているか確認しよう

DATEDIF関数を使うときにまず確認したいのは、**開始日と終了日がExcelに日付として認識されているかどうか**です。

見た目が「2020/4/1」のようになっていても、文字列として入力されている場合は、DATEDIF関数が正しく計算できないことがあります。

Excelでは日付を内部的に「シリアル値」という数値で管理していて、この仕組みによって日付の差を計算できるんです。

もし計算結果がエラーになる場合は、セルの表示形式だけでなく、入力された値が本当に日付として扱われているかを確認しましょう。

日付を手入力する場合は、「2026/4/1」のようにExcelが認識しやすい形式で入力するのが基本です。

DATEDIF関数で使う単位の意味を整理しよう

DATEDIF関数で使う主な単位は、意味を整理して覚えると実務で使いやすくなります。

年齢や勤続年数では「Y」と「YM」をよく使いますが、契約期間や在籍日数の確認では「M」や「D」が役立つこともあります。

– **”Y”**:期間内の満年数
– **”M”**:期間内の満月数
– **”D”**:期間内の満日数
– **”YM”**:満年数を除いた1年未満の月数
– **”YD”**:年数を除いた日数
– **”MD”**:月数を除いた日数

ただし、DATEDIF関数には注意点もあります。

特に「MD」など一部の単位では、月末日やうるう年を含む計算で直感と違う結果になることがあります。

年齢や勤続年数を「満年数」「満年数+余りの月数」として表示する用途では便利ですが、給与計算、法定帳票、厳密な日割り計算など、1日の違いが金額や権利に影響する業務では、計算結果を必ず確認する必要があります。

重要な業務では、会社のルールや法令上の基準に合わせて、DATEDIF関数だけで判断してよいかを確認してから使うのが安全です。

法律上の年齢の扱いに注意

年齢計算では、日本の法律上の年齢の扱いにも注意が必要です。

一般的な感覚では誕生日当日に年齢が上がると考えることが多いですが、**法律上は誕生日の前日に年齢が加算される**場面があります。

その基準に合わせる必要がある場合は、終了日にTODAY()+1を使うなど、運用ルールに応じた調整が必要です。

たとえば、法律上の考え方に合わせて今日時点の年齢を求めたい場合は、次のような式を検討します。

“`
=DATEDIF(A2, TODAY()+1, “Y”)
“`

一方で、社内名簿や一般的なプロフィール表示では、誕生日当日に年齢が上がる表示で運用しているケースも多くあります。

どちらが正しいかは用途によって違うので、年齢を何に使うのかを明確にしたうえで数式を決めましょう。

まとめ

DATEDIF関数は、生年月日から現在の年齢を出したり、入社日から勤続年数を「何年何ヶ月」で表示したりする日常業務にとても役立つ関数です。

開始日、終了日、単位の意味をしっかり押さえて、TODAY関数や絶対参照を組み合わせれば、更新に強くてミスの少ない管理表を作ることができます。

ぜひこの記事を参考に、実務で活用してみてくださいね。

広告