生年月日から現在の年齢(満年齢)を取得する(YEAR,MONTH,DAY,DATE,IF,TODAY)
現在の日付と生年月日の情報から現時点での年齢を自動で取得できると便利です。満年齢を取得するには DATEDIF 関数を使う方法もありますが、今回は DATEDIF 関数を使わない方法で行います。ここでは Excel の関数である YEAR 関数、 MONTH 関数、 DAY 関数、 DATE 関数、 IF 関数、 TODAY 関数を組み合わせて、生年月日から現在の年齢(満年齢)を取得する方法について解説します。
※ DATEDIF 関数を使う方法については「生年月日から現在の年齢(満年齢)を取得する(DATEDIF,TODAY)」を参照されてください。
(Last modified: )
目次
満年齢を取得する
現在日時と生年月日から満年齢を取得します。次のシートを見てください。
満年齢を取得するには、 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)&"歳"
生年月日を指定する箇所には C3 セル、 現在日を指定する箇所には TODAY()
を指定しています。
Enter
キーを押すと C3 セルには次のように表示されました。
C4 セルから C6 セルまで同じように数式を入力しました。
現在日時と生年月日から満年齢を取得することができました。
解説
確認のために YEAR(現在日)-YEAR(生年月日)
と IF(TODAY()-DATE(YEAR(TODAY()),MONTH(C3),DAY(C3))>=0,0,1)
の部分がそれぞれどのような結果になっているのかを表示してみます。
現在日が 2022/03/02 の時に試しています。 2010/01/18 と 2002/02/21 の誕生日については現在の月日が生年月日の月日を超えているので単に年の差が満年齢となりますが、 1994/10/03 と 1987/05/25 の誕生日については現在の月日が生年月日の月日を超えていないので、それぞれ年の差から -1 したものが満年齢となります。
今回使用した関数の解説は下記を参照されてください。
・YEAR関数:日付の値から年の情報を取得する
・MONTH関数:日付の値から月の情報を取得する
・DAY関数:日付の値から日の情報を取得する
・DATE関数:年、月、日の3つの値から日付のシリアル値を取得する
・TODAY関数:現在の日付を取得する
・IF関数:条件が真の場合と偽の場合で異なる値を返す
-- --
Excel の関数である YEAR 関数、 MONTH 関数、 DAY 関数、 DATE 関数、 IF 関数、 TODAY 関数を組み合わせて、生年月日から現在の年齢(満年齢)を取得する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。