「エクセルで年齢を出したいけど、どう計算したらいいかわからない…」
そんな悩みを持つ人はとても多いです。人事データや顧客リスト、学校の名簿管理、医療関係の記録など、年齢を扱う場面はたくさんありますよね。
手動で計算すると時間がかかるし、計算ミスも心配です。でも、Excel(エクセル)を使えば、誕生日を入力するだけで年齢が自動計算されます。
今回は、Excelで誕生日から年齢を簡単かつ正確に計算する方法を、具体的な数式やポイントも含めてわかりやすく紹介します。初心者の方でもすぐに使えるテクニックばかりです。
【基本編】DATEDIF関数で年齢を計算する

一番簡単で確実な方法
年齢計算の定番はDATEDIF(デートディフ)関数です。少しマイナーな関数ですが、年齢計算にはぴったりで、多くの職場で使われています。
基本的な構文
=DATEDIF(開始日, 終了日, 単位)
パラメータの説明
- 開始日:誕生日
- 終了日:現在の日付(またはある時点の日付)
- 単位:「Y」(年)、「M」(月)、「D」(日)
実際の使い方
現在の年齢を計算
誕生日がA2セルに入っている場合:
=DATEDIF(A2, TODAY(), "Y")
例
A列(誕生日) | B列(年齢) |
---|---|
1990/5/15 | =DATEDIF(A2,TODAY(),”Y”) |
1985/12/3 | =DATEDIF(A3,TODAY(),”Y”) |
2000/8/20 | =DATEDIF(A4,TODAY(),”Y”) |
TODAY関数で自動更新
TODAY()関数の便利な点
- 今日の日付を自動で取得
- ファイルを開くたびに最新の年齢に更新
- 手動で日付を変更する必要なし
注意点
- ファイルを開いた時に更新されます
- 印刷時は印刷日の年齢になります
- 過去の特定日時点での年齢を知りたい場合は、TODAYではなく具体的な日付を入力
特定の日付時点での年齢計算
現在ではなく、特定の日付時点での年齢を知りたい場合:
=DATEDIF(A2, "2024/4/1", "Y")
または日付セルを参照:
=DATEDIF(A2, C2, "Y")
【応用編】より詳細な年齢計算
年齢を「○歳○か月」で表示
年と月を別々に計算
年の部分
=DATEDIF(A2, TODAY(), "Y")
月の部分
=DATEDIF(A2, TODAY(), "YM")
組み合わせて表示
=DATEDIF(A2, TODAY(), "Y") & "歳" & DATEDIF(A2, TODAY(), "YM") & "か月"
実際の例
誕生日 | 年齢(詳細) |
---|---|
1990/3/15 | =DATEDIF(A2,TODAY(),”Y”)&”歳”&DATEDIF(A2,TODAY(),”YM”)&”か月” |
結果:「34歳2か月」のように表示されます
年齢を「○歳○か月○日」で表示
さらに詳しく日数まで含める場合:
=DATEDIF(A2, TODAY(), "Y") & "歳" & DATEDIF(A2, TODAY(), "YM") & "か月" & DATEDIF(A2, TODAY(), "MD") & "日"
単位の種類
- “Y”:満年数
- “M”:満月数
- “D”:満日数
- “YM”:年を除いた月数
- “YD”:年を除いた日数
- “MD”:月を除いた日数
月齢の計算
赤ちゃんの月齢を計算する場合:
=DATEDIF(A2, TODAY(), "M")
例
- 誕生日:2024/1/15
- 今日:2024/7/16
- 結果:6か月
【代替方法】YEAR関数を使った年齢計算
より厳密な計算方法
DATEDIF関数は基本的に正確ですが、まれに誤差が出る場合があります。より厳密に計算したい場合は、以下の方法を使います:
=YEAR(TODAY()) - YEAR(A2) - (DATE(YEAR(TODAY()), MONTH(A2), DAY(A2)) > TODAY())
式の解説
計算の流れ
- YEAR(TODAY()) – YEAR(A2)
- 現在の年から生まれ年を引く
- DATE(YEAR(TODAY()), MONTH(A2), DAY(A2))
- 今年の誕生日を作成
- > TODAY()
- 今年の誕生日がまだ来ていないかチェック
- 最終的な計算
- 誕生日が来ていない場合は1を引く
具体例で理解
例:1990年5月15日生まれ、今日が2024年3月10日の場合
- 2024 – 1990 = 34
- 今年の誕生日:2024年5月15日
- 2024年5月15日 > 2024年3月10日 = TRUE(1)
- 34 – 1 = 33歳
どちらの方法を選ぶべきか
方法 | メリット | デメリット |
---|---|---|
DATEDIF | 簡単、直感的 | 関数一覧に表示されない |
YEAR関数組み合わせ | より厳密、応用が利く | 式が複雑 |
おすすめ
- 一般的な用途:DATEDIF関数
- 厳密な計算が必要:YEAR関数の組み合わせ
【実践編】様々な場面での活用方法

人事管理での活用
社員の年齢管理表
A列 | B列 | C列 | D列 |
---|---|---|---|
社員名 | 誕生日 | 現在年齢 | 退職年齢まで |
田中太郎 | 1985/4/1 | =DATEDIF(B2,TODAY(),”Y”) | =60-C2 |
佐藤花子 | 1990/7/15 | =DATEDIF(B3,TODAY(),”Y”) | =60-C3 |
年齢層の分析
年齢に応じてカテゴリ分けする場合:
=IF(C2<30, "20代", IF(C2<40, "30代", IF(C2<50, "40代", "50代以上")))
教育現場での活用
学年判定
4月1日基準で学年を判定:
=IF(MONTH(A2)*100+DAY(A2)>=401, YEAR(TODAY())-YEAR(A2)-6, YEAR(TODAY())-YEAR(A2)-7)
年齢制限のチェック
スポーツ大会の参加資格確認:
=IF(DATEDIF(A2,TODAY(),"Y")>=18, "参加可能", "参加不可")
医療・介護分野での活用
高齢者の判定
65歳以上の高齢者を判定:
=IF(DATEDIF(A2,TODAY(),"Y")>=65, "高齢者", "一般")
ワクチン接種の優先順位
年齢に応じた優先順位の設定:
=IF(DATEDIF(A2,TODAY(),"Y")>=75, "最優先", IF(DATEDIF(A2,TODAY(),"Y")>=65, "優先", "一般"))
【データ入力のコツ】正確な年齢計算のために
日付の正しい入力方法
推奨する入力形式
- yyyy/mm/dd:2000/1/15
- yyyy-mm-dd:2000-01-15
- mm/dd/yyyy:01/15/2000(アメリカ式)
避けるべき入力
- 文字列での入力:「平成12年1月15日」
- 不完全な入力:「2000/1」(日が無い)
- 存在しない日付:「2000/2/30」
セルの書式設定
日付形式の統一
- セルを選択
- 右クリック → 「セルの書式設定」
- 「表示形式」タブ → 「日付」
- 希望する形式を選択
ユーザー定義形式
より細かく設定したい場合:
- yyyy”年”m”月”d”日”:2000年1月15日
- m/d:1/15(月日のみ)
- yyyy:2000(年のみ)
データの検証
入力規則の設定
- セル範囲を選択
- 「データ」タブ → 「データの入力規則」
- 「設定」タブで条件を設定
例:1900年以降の日付のみ許可
- 入力値の種類:日付
- データ:次の値以上
- 開始日:1900/1/1
【トラブルシューティング】よくある問題と解決方法

DATEDIF関数が見つからない
症状
- 関数の一覧に表示されない
- オートコンプリートで候補に出ない
原因と解決方法
原因 DATEDIF関数は、昔のLotus 1-2-3互換の関数で、Excelの公式な関数一覧には表示されません。
解決方法
- 手動で入力:直接「=DATEDIF(」と入力
- 正常に動作:表示されなくても使用可能
- 代替方法:YEAR関数の組み合わせを使用
エラーが表示される場合
#NUM!エラー
原因
- 開始日が終了日より後になっている
- 存在しない日付を入力している
解決方法
=IF(A2="", "", IF(A2>TODAY(), "未来の日付", DATEDIF(A2,TODAY(),"Y")))
#VALUE!エラー
原因
- 日付として認識されていない
- 文字列として入力されている
解決方法
- セルの書式を日付形式に変更
- DATEVALUE関数で変換
=DATEDIF(DATEVALUE(A2), TODAY(), "Y")
年齢が正しく計算されない
よくあるケース
ケース1:誕生日前の計算
- 症状:誕生日が来ていないのに+1歳される
- 原因:計算式の誤り
- 解決:DATEDIF関数を使用
ケース2:うるう年の問題
- 症状:2月29日生まれの計算がおかしい
- 原因:存在しない日付の処理
- 解決:YEAR関数の組み合わせを使用
ケース3:古い日付の問題
- 症状:1900年より前の日付でエラー
- 原因:Excelの日付システムの制限
- 解決:別の計算方法を検討
自動更新されない場合
原因と解決方法
計算方法の設定
- 「ファイル」→「オプション」→「数式」
- 「計算方法」を「自動」に設定
手動で再計算
- F9キー:ワークブック全体を再計算
- Shift+F9:アクティブシートのみ再計算
【応用テクニック】さらに便利な使い方
条件付き書式で年齢を色分け
年齢層による色分け
- 年齢列を選択
- 「ホーム」→「条件付き書式」→「新しいルール」
- 「数式を使用して書式設定するセルを決定」
例:65歳以上を赤色
=$C2>=65
グラデーション表示
年齢が高いほど濃い色にする:
- 「条件付き書式」→「カラースケール」
- 適切な色を選択
年齢の統計分析
平均年齢の計算
=AVERAGE(C:C)
年齢の分布
=COUNTIFS(C:C,">=20",C:C,"<30") ' 20代の人数
最年長・最年少の特定
=MAX(C:C) ' 最高年齢
=MIN(C:C) ' 最低年齢
マクロで自動化
VBAコードの例
Sub CalculateAge()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If ws.Cells(i, 1).Value <> "" Then
ws.Cells(i, 2).Value = DateDiff("yyyy", ws.Cells(i, 1).Value, Date) - _
IIf(Format(ws.Cells(i, 1).Value, "mmdd") > Format(Date, "mmdd"), 1, 0)
End If
Next i
End Sub
【実際の業務での活用例】

ケース1:保険会社での保険料計算
年齢に応じた保険料の自動計算:
A列 | B列 | C列 | D列 |
---|---|---|---|
氏名 | 誕生日 | 現在年齢 | 月額保険料 |
田中太郎 | 1980/5/15 | =DATEDIF(B2,TODAY(),”Y”) | =VLOOKUP(C2,料金表,2,TRUE) |
ケース2:学習塾での学年管理
誕生日から学年を自動判定:
=IF(MONTH(B2)*100+DAY(B2)>=401,
YEAR(TODAY())-YEAR(B2)-6,
YEAR(TODAY())-YEAR(B2)-7) & "年生"
ケース3:健康診断の受診間隔管理
前回受診日からの経過期間:
=DATEDIF(前回受診日, TODAY(), "M") & "か月経過"
ケース4:退職金計算
勤続年数の計算:
=DATEDIF(入社日, TODAY(), "Y") & "年" & DATEDIF(入社日, TODAY(), "YM") & "か月"
まとめ
Excelで年齢を計算する方法をまとめると、以下のようになります:
基本的な方法
最も簡単で確実
=DATEDIF(誕生日, TODAY(), "Y")
より詳細に表示
=DATEDIF(誕生日, TODAY(), "Y") & "歳" & DATEDIF(誕生日, TODAY(), "YM") & "か月"
より厳密な計算
=YEAR(TODAY()) - YEAR(誕生日) - (DATE(YEAR(TODAY()), MONTH(誕生日), DAY(誕生日)) > TODAY())
選び方の目安
- 一般的な用途:DATEDIF関数がおすすめ
- 詳細な表示が必要:DATEDIF関数の組み合わせ
- 厳密な計算が必要:YEAR関数の組み合わせ
- 大量データの処理:マクロの活用を検討
活用のポイント
- データ入力は正確に:日付形式を統一
- エラーチェックを組み込む:IF関数で条件分岐
- 自動更新を活用:TODAY関数で常に最新
- 用途に応じて使い分け:必要な精度に応じて選択
コメント