Microsoft Worksの技術サポートページに、生年月日から今日の年齢を計算する数式が掲載されています。
Excelで年齢を計算するにはDATEDIF関数を使うのが有名な方法ですが、このWorksの技術サポートページではDATEDIF関数を使わずに年齢を計算する方法が掲載されています。
DATEDIF関数を使わないで年齢計算を行う数式
Works用の記事ではありますが、Excelでもそのまま使え、考え方が広く応用の効くものですので、補足を入れてご紹介しておきます。- IF(MONTH(A1)*100 + DAY(A1) >= MONTH(B1)*100 + DAY(B1),
0, 1)」
という計算式を入力する
YEAR・MONTH・DAY関数とIF関数を組み合わせて、年齢計算を行っている数式です。
DATEDIF関数を使わないで年齢計算を行う数式の解説
年齢計算の基本は、現在の西暦年から生まれた年の西暦年の引き算です。
それが
「YEAR(A1)-YEAR(B1)」
の部分です。
ポイントは、誕生日を過ぎているかどうかです。
誕生日を既に過ぎているときは
「YEAR(A1)-YEAR(B1)」
でOKですが、誕生日より前の日付なら
「YEAR(A1)-YEAR(B1)」から「1」を引き算しなければなりません。
この計算をしているのが
「- IF(MONTH(A1)*100 + DAY(A1) >= MONTH(B1)*100 + DAY(B1), 0, 1)
の部分です。
誕生日を過ぎているかどうかを判定するのに、月と日にちを確認する必要があります。
それを一つの比較演算で行うために、月のほうを100倍(MONTH(A1)*100・MONTH(B1)*100)しておいて、そこに日付(DAY(A1)・DAY(B1))を足し算したものを比較しています。
この考え方は、日付関連の計算でいろいろと応用が効きそうです。
誕生日の前日に年齢を加算する場合の数式
誕生日の前日に年齢を加算する必要がある場合は、以下のような数式です。- IF(MONTH(A1)*100 + DAY(A1) + 1 >= MONTH(B1)*100 + DAY(B1), 0, 1)」
という計算式を入力する
サンプルファイルのC1:C2セルに上記の2つの例を作成してあります。
数式を少しでも読みやすくするために、改行を入れてありますので、2007以降のExcelをお使いの方で、数式が全部表示されないという方は、数式バーを広げてご確認ください。
Home » Excel(エクセル)の関数・数式の使い方 » 日付の処理・計算 » DATEDIF関数を使わずに年齢を計算する