誕生日から指定した日付時点での満年齢を求める
社員名簿や会員リストの表で、あらかじめ入力されている誕生日(生年月日)に基づいて、現在の年齢を表示したいことがあると思います。例えば、以下のようなケースです。
表のF列にある「誕生日」から、セルG1の「更新日」を基準とした会員の年齢を表示しています。
しかし、こうした年齢を手動で入力するのは、時間のムダでしかありません。もちろん、データの正確性にも欠けてしまいます。では、どうすれば...?
【エクセル時短】第116回では、誕生日の日付と指定した日付時点での満年齢を自動計算する方法を紹介します。
期間内の満年数を求めるDATEDIF関数を使う
Excelで年齢を計算する方法はいくつかありますが、「DATEDIF」(デート・ディフ)関数を使うのが定番です。構文を見てみましょう。
=DATEDIF
(開始日, 終了日, 単位)
引数[開始日]から引数[終了日]までの年数・月数・日数を、引数[単位]で指定した計算方法に基づいて求めます。
引数[単位]には以下の6種類があり、いずれも「"」(ダブルクォーテーション)で囲んで指定します。
- Y......満年数を求める
- M......満月数を求める
- D......満日数を求める
- MD......1年に満たない月数を求める
- YM......1年に満たない日数を求める
- YD......1カ月に満たない日数を求める
このDATEDIF関数で[開始日]に誕生日、[終了日]にデータの更新日などの基準となる日付を指定し、[単位]で「Y」(満年数を求める)を指定すれば、現在の満年齢が求められるというわけです。
1つ注意点としては、DATEDIF関数は入力候補や[関数の挿入]ダイアログボックスに表示されません。セルや数式バーに直接入力する必要があります。具体的な手順を以下で見ていきます。DATEDIF関数で満年齢を求める
1年齢を自動計算する関数式を入力する
セルG3に関数式を入力します。DATEDIF関数は入力候補に表示されませんが、そのまま以下のように入力してください。
=DATEDIF(F3,$G$1,"Y")
セルF3に入力されている誕生日を[開始日]、セルG1に入力された日付を[終了日]として指定しました。関数式をコピーしたときにセル参照がずれないよう、絶対参照で「$G$1」としています。[単位]の「"Y"」は満年数の意味です。
2年齢が自動計算された
年齢が自動計算されました。入力した関数式はコピーしておいてください。
3自動計算を確認する
本当に年齢が自動計算されるかを確認してみましょう。引数[終了日]として指定したセルG1の日付を「2019/7/1」に書き換えると年齢が更新され、自動計算できていることが分かります。
HINTDATEDIF関数を使わずに計算できる?
DATEDIF関数は入力候補に表示されないため、間違っているような気がするかもしれませんが、問題なく使えます。ここでは念のため、DATEDIF関数を使わずに自動計算する方法も紹介しておきましょう。
先ほどセルF3に入力した関数式を以下のように変更します。
=YEAR($G$1)-YEAR(F3)+IF(F3>DATE(YEAR(F3),MONTH($G$1),DAY($G$1)),-1,0)
式の意味を説明しましょう。まず「YEAR($G$1)-YEAR(F3)」の部分は、YEAR関数を使ってセルG1(基準日)の年と、セルF3(誕生日)の年の差を求めています。ただ、単純に年を引いているだけなので、基準日の時点での満年齢かどうかはわかりません。
続いて、IF関数にネストされたDATE関数の引数「YEAR(F3),MONTH($G$1),DAY($G$1)」の部分は、YEAR関数で誕生日の年、MONTH関数とDAY関数で基準日の月と日を取り出しています。これをDATE関数で日付形式に整形すると「1976/7/1」になります。
そして、IF関数で誕生日とDATE関数で求めた日付を比較し、誕生日のほうが大きい=誕生日前であればTRUEの値「-1」を返します。先に求めた年の差から「-1」され、最終的に満年齢が求められます。