Excelで生年月日から年齢を計算する方法|DATEDIF関数が使えない場合の代替数式と成人判定の方法

Excel

Excelで名簿や管理表を作成する際、生年月日から現在の年齢を自動計算したい場面があります。しかし、環境によってはDATEDIF関数が使えなかったり、関数入力が制限されていたりする場合があります。

この記事では、DATEDIF関数を使わずに生年月日から年齢を求める方法、18歳以上・18歳未満の判定方法、さらに旧成人年齢である20歳を基準にした判定方法について詳しく解説します。

Excelで年齢計算をするときの基本的な考え方

年齢は単純に「現在の年-生まれた年」で計算できますが、誕生日をまだ迎えていない場合は1歳引く必要があります。

例えば、2000年12月生まれの人の場合、現在が2025年10月なら年だけを見ると25歳ですが、誕生日はまだ来ていないため実際の年齢は24歳になります。

そのため、正確な年齢計算では現在の日付と誕生日の日付を比較する必要があります。

DATEDIFを使わずに年齢を計算する数式

DATEDIF関数が利用できない場合は、YEAR、MONTH、DAY、TODAY関数を組み合わせることで年齢を計算できます。

例えば、生年月日がA1セルに入力されている場合、以下の数式で現在の年齢を求められます。

=YEAR(TODAY())-YEAR(A1)-IF(TEXT(TODAY(),”mmdd”)<TEXT(A1,”mmdd”),1,0)

この数式では、今年の誕生日がまだ来ていない場合に1を引くことで、正確な満年齢を計算しています。

例えばA1に「2005/12/20」、今日が「2025/10/01」の場合、年だけで計算すると20歳ですが、誕生日がまだなので結果は19歳になります。

18歳以上かどうかをExcelで判定する方法

年齢が18歳以上かどうかを確認したい場合は、先ほどの年齢計算式をIF関数と組み合わせます。

例えば、生年月日がA1セルに入力されている場合、以下の数式を使用できます。

=IF(YEAR(TODAY())-YEAR(A1)-IF(TEXT(TODAY(),”mmdd”)<TEXT(A1,”mmdd”),1,0)>=18,”18歳以上”,”18歳未満”)

この数式では、計算された年齢が18歳以上なら「18歳以上」、それ以外なら「18歳未満」と表示します。

名簿管理や年齢制限確認などで、自動的に対象者を分類したい場合に便利です。

20歳以上かどうかを判定する方法

民法改正前の成人年齢である20歳を基準にした判定を行いたい場合も、18歳判定と同じ考え方で数値を変更します。

例えば20歳以上かどうかを表示する場合は、以下のような数式になります。

=IF(YEAR(TODAY())-YEAR(A1)-IF(TEXT(TODAY(),”mmdd”)<TEXT(A1,”mmdd”),1,0)>=20,”20歳以上”,”20歳未満”)

これにより、現在の年齢が20歳以上なのか、それとも20歳未満なのかを自動判定できます。

基準日を指定して年齢を計算する方法

現在の年齢ではなく、特定の日付時点での年齢を求めたい場合があります。例えば契約日時点の年齢や、年度開始時点の年齢を計算する場合です。

その場合はTODAY関数の代わりに、基準日を入力したセルを使用します。

例えばB1セルに基準日、A1セルに生年月日がある場合は、以下のように計算できます。

=YEAR(B1)-YEAR(A1)-IF(TEXT(B1,”mmdd”)<TEXT(A1,”mmdd”),1,0)

この方法なら、過去の日付や将来の日付を基準にした年齢計算も可能になります。

Excelで年齢計算するときの注意点

生年月日は必ずExcelが日付として認識できる形式で入力する必要があります。「2000年1月1日」のような文字列形式になっている場合、正しく計算できないことがあります。

また、入力されたデータに空白セルがある場合、そのまま計算すると誤った結果が表示される可能性があります。

実際の管理表では、IF関数を追加して未入力の場合は空白表示にする設定もおすすめです。

まとめ|DATEDIFが使えなくてもExcelで正確な年齢計算は可能

ExcelではDATEDIF関数が利用できない環境でも、YEAR関数、TEXT関数、IF関数を組み合わせることで、生年月日から正確な年齢を計算できます。

また、計算した年齢を利用すれば、18歳以上かどうか、20歳以上かどうかといった条件判定も自動化できます。

名簿管理や顧客管理などで年齢を扱う場合は、単純な年の差ではなく誕生日を考慮した数式を使うことで、正確で実用的なExcel表を作成できます。

コメント

タイトルとURLをコピーしました