【Excel】年齢を生年月日から自動計算する方法!ExcelのDATEDIF関数で満年齢を正確に求める

【Excel】年齢を生年月日から自動計算する方法!ExcelのDATEDIF関数で満年齢を正確に求める
🛡️ 超解決

Excelで生年月日から満年齢を正確に計算したい場面は多いでしょう。

誕生日を迎えるたびに手動で年齢を更新するのは非効率です。

この記事では、ExcelのDATEDIF関数を使って、生年月日を基に自動で満年齢を計算する方法を解説します。

これにより、常に最新の年齢データを維持できます。

【要点】Excelで生年月日から満年齢を自動計算する

  • DATEDIF関数: 生年月日と現在日付から満年齢を計算する。
  • 数式 `=DATEDIF(生年月日セル,TODAY(),”y”)`: TODAY()関数で常に最新の日付を参照し、満年齢を算出する。
  • セルの書式設定: 計算結果の数値を表示するセルの書式を「標準」または「数値」に設定する。

ADVERTISEMENT

DATEDIF関数で満年齢を計算する仕組み

DATEDIF関数は、開始日と終了日の間の期間を、指定した単位(年・月・日)で計算する関数です。

この関数は、Excelの標準関数には表示されませんが、正しく入力すれば動作します。

満年齢を計算するには、開始日に生年月日、終了日に今日の日付を指定し、単位に「y」(year:年)を指定します。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

DATEDIF関数を使った満年齢の計算手順

  1. 開始日と終了日を準備する
    A列に氏名、B列に生年月日が入力されていると仮定します。C列に満年齢を表示させます。
  2. TODAY関数で今日の日付を取得する
    TODAY()関数は、計算を実行した時点の現在日付を自動的に返します。これにより、常に最新の年齢が計算されます。
  3. DATEDIF関数を入力する
    C2セルに以下の数式を入力します。生年月日がB2セルにあるとします。

`=DATEDIF(B2,TODAY(),”y”)`

  1. 数式をコピーする
    C2セルのフィルハンドル(セルの右下隅にある小さな四角)をダブルクリックするか、下にドラッグして、他の行にも数式をコピーします。
  2. セルの書式設定を確認する
    計算結果が表示されるC列のセルの書式設定が「標準」または「数値」になっていることを確認します。必要に応じて変更してください。

DATEDIF関数でよくある誤操作と対処法

日付の形式が正しくない場合

生年月日がExcelに日付として認識されていない場合、DATEDIF関数は正しく計算できません。

例えば、「2000/1/1」のようにスラッシュで区切られている場合は通常日付として認識されますが、「2000年1月1日」や「2000-1-1」のように入力されていると、Excelが文字列として認識する可能性があります。

対処法

  1. セルの書式設定を確認・変更する
    生年月日が入力されているセル(例:B2セル)を選択し、右クリックして「セルの書式設定」を選択します。「表示形式」タブで「日付」を選択し、適切な形式(例:2001/3/14)を選んで「OK」をクリックします。
  2. TEXT関数で文字列を日付に変換する
    もし日付の形式が統一できない場合、TEXT関数を使って一度文字列として日付を整形し、それをDATEDIF関数で参照する方法もあります。例えば、生年月日が「2000年1月1日」と文字列で入力されている場合、`=DATEDIF(TEXT(B2,”yyyy/m/d”),TODAY(),”y”)`のように記述します。ただし、この方法は元のデータ形式が複雑な場合にのみ検討してください。

開始日より終了日が古い場合

DATEDIF関数は、開始日よりも終了日が古い場合、エラー値「#NUM!」を返します。

これは、未来の日付を開始日として指定した場合などに発生する可能性があります。

対処法

  1. 日付の入力ミスを確認する
    生年月日とTODAY()関数のどちらかが正しく入力されているか確認します。特に、生年月日が未来の日付になっていないかチェックしてください。
  2. IFERROR関数でエラー表示を回避する
    もし、入力ミスや意図しない未来日付の参照が発生する可能性がある場合は、IFERROR関数を使ってエラー表示を回避できます。例えば、エラー時に「-」を表示したい場合は、数式を以下のように変更します。
    `=IFERROR(DATEDIF(B2,TODAY(),”y”),”-“)`

DATEDIF関数で「y」以外の単位を使う場合

DATEDIF関数は「y」以外に「m」(月)、「d」(日)、「ym」(満年齢から月数を計算)、「md」(月の日数を計算)、「yd」(年からの日数を計算)といった単位を指定できます。

満年齢を正確に求めるためには、必ず「y」を指定する必要があります。

誤って「m」や「d」を指定すると、期待する年齢が表示されません。

対処法

  1. 単位「y」を正しく指定する
    DATEDIF関数の第三引数に、必ずダブルクォーテーションで囲まれた「y」を指定してください。数式が `=DATEDIF(生年月日セル,TODAY(),”y”)` となっているか確認します。

ADVERTISEMENT

DATEDIF関数とTODAY関数の応用

特定の日付時点での年齢を計算する

TODAY()関数は常に現在の日付を返しますが、もし過去や未来の特定の日付時点での年齢を計算したい場合は、TODAY()関数の代わりにその日付を直接セルに入力するか、DATE関数を使って指定します。

例:2020年4月1日時点での年齢を計算する

もしC2セルに計算したい特定の日付(例:2020/4/1)が入力されている場合、満年齢を計算する数式は以下のようになります。

`=DATEDIF(B2,C2,”y”)`

または、DATE関数を使って直接数式に記述することも可能です。

`=DATEDIF(B2,DATE(2020,4,1),”y”)`

満年齢だけでなく、月数や日数も表示する

DATEDIF関数は、満年齢だけでなく、経過した月数や日数も計算できます。

例えば、満年齢、経過月数、経過日数をまとめて表示したい場合、以下のように数式を組み合わせることが可能です。

例:満年齢、経過月数、経過日数を表示する

C2セルに満年齢、D2セルに経過月数、E2セルに経過日数を表示する場合、それぞれのセルに以下の数式を入力します。

C2セル(満年齢): `=DATEDIF(B2,TODAY(),”y”)`

D2セル(経過月数): `=DATEDIF(B2,TODAY(),”ym”)`

E2セル(経過日数): `=DATEDIF(B2,TODAY(),”md”)`

これらの結果を組み合わせて、「〇歳△ヶ月□日」のように表示することもできます。

例えば、F2セルにまとめて表示したい場合は、以下の数式を入力します。

`=DATEDIF(B2,TODAY(),”y”)&”歳”&DATEDIF(B2,TODAY(),”ym”)&”ヶ月”&DATEDIF(B2,TODAY(),”md”)&”日”`

DATEDIF関数と他の年齢計算方法の比較

項目 DATEDIF関数 YEARFRAC関数 YEAR関数とDATE関数
満年齢計算 可能 (単位”y”) 可能 (単位1) 不可 (年差のみ)
経過月数計算 可能 (単位”ym”) 可能 (単位12) 不可
経過日数計算 可能 (単位”md”) 可能 (単位365) 不可
実装の容易さ 容易 (数式入力のみ) 容易 (数式入力のみ) やや複雑 (複数関数使用)
互換性 Excel 2013以降 (非表示関数) Excel 2013以降 全バージョン
注意点 非表示関数であり、入力補完されない 小数部分が含まれるため、整数化が必要 満年齢計算には別途工夫が必要

まとめ

Excelで生年月日から満年齢を自動計算するには、DATEDIF関数とTODAY()関数を組み合わせるのが最も効果的です。

数式 `=DATEDIF(生年月日セル,TODAY(),”y”)` を使用することで、常に最新の正確な満年齢を表示できます。

日付の形式やエラー処理に注意しながら、この関数を活用してください。

さらに、経過月数や日数を計算して、より詳細な期間情報を得ることも可能です。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】