生年月日から現在の年齢(満年齢)を取得する(YEAR,MONTH,DAY,DATE,IF,TODAY)

現在の日付と生年月日の情報から現時点での年齢を自動で取得できると便利です。満年齢を取得するには DATEDIF 関数を使う方法もありますが、今回は DATEDIF 関数を使わない方法で行います。ここでは Excel の関数である YEAR 関数、 MONTH 関数、 DAY 関数、 DATE 関数、 IF 関数、 TODAY 関数を組み合わせて、生年月日から現在の年齢(満年齢)を取得する方法について解説します。

※ DATEDIF 関数を使う方法については「生年月日から現在の年齢(満年齢)を取得する(DATEDIF,TODAY)」を参照されてください。

(Last modified: )

満年齢を取得する

現在日時と生年月日から満年齢を取得します。次のシートを見てください。

満年齢を取得する(1)

満年齢を取得するには、 YEAR 関数を使って YEAR(現在日)-YEAR(生年月日) で取得します。ただし、現在の月日が生年月日の月日を超えていない場合は -1 する必要があります。例えば誕生日が 5月1日の場合で、現在の日時が 3月4 日だった場合は -1 する必要があります。

(例) 生年月日 2000年5月1日 、現在日 2010年7月4日
満年齢 = 2010 - 2000 = 10

(例) 生年月日 2000年5月1日 、現在日 2010年3月4日
満年齢 = 2010 - 2000 - 1 = 9

現在の月日が生年月日の月日を超えているかどうか調べる方法として現在日と生年月日のシリアル値を比較します。ただ月日だけを比較したいので生年月日の方の年を現在日の年に変更した上で比較します。 YEAR 関数、 MONTH 関数、 DAY 関数を使ってそれぞれの値を取得した上で DATE 関数を使ってシリアル値に戻します。

=現在日-DATE(YEAR(現在日),MONTH(生年月日),DAY(生年月日))

この値が 0 以上ならばそのまま、 0 より小さければ -1 します。よって満年齢を求める式は次のようになります。

=YEAR(現在日)-YEAR(生年月日)-IF(現在日-DATE(YEAR(現在日),MONTH(生年月日),DAY(生年月日))>=0,0,1)

満年齢を取得して D3 セルに表示します。 D3 セルに次のような数式を入力しました。

=YEAR(TODAY())-YEAR(C3)-IF(TODAY()-DATE(YEAR(TODAY()),MONTH(C3),DAY(C3))>=0,0,1)&"歳"

満年齢を取得する(2)

生年月日を指定する箇所には C3 セル、 現在日を指定する箇所には TODAY() を指定しています。

Enter キーを押すと C3 セルには次のように表示されました。

満年齢を取得する(3)

C4 セルから C6 セルまで同じように数式を入力しました。

満年齢を取得する(4)

現在日時と生年月日から満年齢を取得することができました。

解説

確認のために YEAR(現在日)-YEAR(生年月日)IF(TODAY()-DATE(YEAR(TODAY()),MONTH(C3),DAY(C3))>=0,0,1) の部分がそれぞれどのような結果になっているのかを表示してみます。

満年齢を取得する(5)

満年齢を取得する(6)

満年齢を取得する(7)

満年齢を取得する(8)

現在日が 2022/03/02 の時に試しています。 2010/01/18 と 2002/02/21 の誕生日については現在の月日が生年月日の月日を超えているので単に年の差が満年齢となりますが、 1994/10/03 と 1987/05/25 の誕生日については現在の月日が生年月日の月日を超えていないので、それぞれ年の差から -1 したものが満年齢となります。

今回使用した関数の解説は下記を参照されてください。

-- --

Excel の関数である YEAR 関数、 MONTH 関数、 DAY 関数、 DATE 関数、 IF 関数、 TODAY 関数を組み合わせて、生年月日から現在の年齢(満年齢)を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。