DATEDIF を使わない年齢計算のやり方

エクセル(Excel)のハウツー PC

こんにちは、mickです。

Excel で年齢を計算するときに使うことが紹介される関数の DATEDIF関数。
これって、関数名を入れても候補としてでてこない関数です。
なんでかなー、と思っていたらちゃんと理由がありました。

最初から Excel の関数じゃなかった

マイクロソフトのヘルプによると、昔あった表計算ソフトの Lotus 1-2-3 のブック(ファイル)をサポートするために残しているそうです。

警告: Excel では、Lotus 1-2-3 の古いブックをサポートするために、DATEDIF 関数が用意されています。 DATEDIF 関数では、特定のシナリオで誤った計算結果を返すことがあります。 詳細については、この記事の既知の問題のセクションを参照してください。

Microsoft Excel ヘルプ

大雑把に年齢を計算するなら問題ないですが、厳密に計算するには DATEDIF には欠点があります。

ここでは、Excel で DATEDIF を使わないで年齢を計算する方法を載せています

YEARFRAC関数 ではだめ?

Excel のもつ関数(公式の関数)で年齢を計算する場合によくみるのが YEARFRAC関数。
この関数は、2つの全ての日数が1年に対してどれくらいの割合をもっているかを出してくれます。

説明: YEARFRAC は、2 つの日付 (start_date と end_date)の間の全日数が1年間に対して占める割合を計算します。 例えば、YEARFRAC を使って、特定の期間に割り当てられる年利または年債の割合を求めることができます。

Microsoft Excel ヘルプ

ただ、これを年齢計算に使おうとすると、うまくいかないこともあるみたいなんですよね。

YEARFRAC関数だと年齢計算が合わないことがある?
YEARFRAC関数だと年齢計算が合わないことがある?

自分の環境(Excel 2016)だけなのかなぁ。
同じ症状の方、いたらぜひお問い合わせか Twitter からで教えて下さい。
Microsoft も年齢計算に YEARFRAC関数を紹介しているので自分が間違っているような気もするのですが…
(※上のは、法令に合わせて誕生日の前日に歳を取る計算で+1日としています)

一番手っ取り早そうなのは、365.25で割る

日付も考慮して年齢を出す場合は、日付の差を「365.25」で割るのが一番手っ取り早そう。
この「0.25」は、うるう年を考慮しての数値です。
ただ、うるう年も必ず4年毎に来るわけじゃないから、この方法も微妙かも…

まとめ。

DATEDIF を使わない年齢計算のやり方について考えてみました。

神経質になる必要は無いかもですが、年齢を「正確」に計算させるのは結構難しいですね。
もう少し考えてみたくなってしまいました。

記事を読んでくれて嬉しいです。
今日もありがとうございました。

初稿 2021/09/27