【VBAリファレンス】【Excel実務の鉄板】生年月日から「正しい年齢」を算出する完全ガイド|DATEDIF関数の極意

スポンサーリンク

こんにちは、Excel VBA講師の「師範」です。日々の業務で「社員名簿の年齢を更新したい」「顧客の年齢層別分析をしたい」といった課題に直面したことはありませんか?

Excelで年齢を計算するのは一見簡単そうに見えますが、実は「うるう年」や「年齢計算のルール」を正しく理解していないと、思わぬミスにつながります。今日は、実務で絶対に恥をかかない、正確かつ効率的な年齢計算のテクニックを、プロの視点から徹底的に解説します。

なぜ「単純な引き算」ではいけないのか?

初心者の方がやりがちなのが、「今日の年」から「生まれた年」を引く計算(=YEAR(TODAY())-YEAR(生年月日))です。これ、実は致命的な間違いを含んでいます。

なぜなら、この計算方法だと「誕生日を迎える前か後か」を考慮できないからです。例えば、2023年12月31日時点で、1月1日生まれの人と12月30日生まれの人がいた場合、単純な引き算では同じ年齢になってしまいますが、実際には誕生日を迎えたかどうかの判定が抜けています。

Excelで正確に年齢を出すためには、月日を考慮した「期間計算」が必要不可欠なのです。

最強の関数「DATEDIF」をマスターしよう

Excelには、年齢計算のための「DATEDIF関数」という隠れた(?)関数があります。実はこの関数、Microsoftの公式ヘルプにもあまり詳しく載っていないのですが、実務家にとっては「必須中の必須」ツールです。

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

年齢を計算する場合は、以下のように記述します。
`=DATEDIF(A2, TODAY(), “y”)`

ここで、A2セルには「生年月日」が入っていると仮定します。
* **A2**: 開始日(生年月日)
* **TODAY()**: 終了日(今日の日付を自動取得)
* **”y”**: 期間内の「満年数」を算出するオプション

この「”y”」を指定することで、Excelは自動的に誕生日を基準に、今日までの満年齢を算出してくれるのです。これぞ、Excelが誇る最強の年齢計算式です。

「満年齢」と「数え年」の使い分け

日本の実務では、稀に「数え年」を求められることがあります。満年齢は「誕生日が来るごとに1歳増える」ものですが、数え年は「生まれた時を1歳とし、元旦を迎えるごとに年を取る」という考え方です。

数え年を計算する場合は、DATEDIF関数ではなく、YEAR関数を工夫します。
`=YEAR(TODAY()) – YEAR(A2) + 1`

このように、用途に合わせて計算ロジックを切り替えるのが、ベテランの作法です。

エラーを回避する「IFERROR」の活用

実務では、データが空欄だったり、誤った文字列が入っていたりすることがあります。そんな時、セルに「#VALUE!」と表示されてしまうと、表全体が見苦しくなりますよね。

プロは必ずエラー対策を入れます。
`=IFERROR(DATEDIF(A2, TODAY(), “y”), “”)`

このようにIFERROR関数で囲むことで、データが未入力の場合は「空白」を返すように設定できます。これだけで、帳票の完成度がグッと上がります。

VBAで一気に計算を自動化する(講師からのアドバイス)

ここからは少しだけVBAの話をしましょう。もし、数百人、数千人の名簿を扱うのであれば、関数をコピーするよりもVBAで一括処理する方が、ファイルサイズも軽く、誤消去のリスクも防げます。

例えば、以下のようなプロシージャを組んでおくと便利です。

Sub CalculateAge()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“Sheet1”)
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row

‘ B列に年齢を算出
With ws.Range(“B2:B” & lastRow)
.Formula = “=IFERROR(DATEDIF(A2, TODAY(), “”y””), “”””)”
.Value = .Value ‘ 数式を値に変換して軽量化
End With
End Sub

このように、数式を入力した瞬間に値に変換してしまえば、再計算の負荷もかからず、非常に高速に動作します。大規模データを取り扱う際は、ぜひこの手法を検討してください。

まとめ:正確さが信頼を生む

年齢計算は、人事、経理、医療、教育と、あらゆる現場で求められる基本スキルです。しかし、その「基本」を疎かにせず、DATEDIF関数を使いこなし、エラー処理まで完璧に行うこと。その小さな積み重ねが、あなたへの「Excelの達人」という信頼につながります。

今日から、単純な引き算を卒業し、DATEDIF関数によるスマートな年齢計算を実践してみてください。

Excelは、正しい知識さえあれば、あなたの時間を劇的に節約してくれる最高の相棒です。もし分からないことがあれば、いつでも質問してくださいね。それでは、次回の講義でお会いしましょう!

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