Excelで名簿や顧客リストを扱うとき、生年月日から年齢を自動で計算したいことはありませんか?
関数でも可能ですが、マクロを使えばボタンひとつで一括計算できるようになります。
この記事では、生年月日から年齢を計算するVBAコードをご紹介します。
動作イメージはこちら(記事作成日は2025年8月28日です)

シートの確認
今回はこのようなシートを使います。(A列に名前、B列に生年月日、C列に年齢)

自動計算をして、C列に年齢を反映していきます。
VBAコード
生年月日から年齢を自動計算するVBAコード
Sub ageCalc()
Dim lastRow As Long
Dim i As Long
Dim birthday As Date
Dim age As Long
With ActiveSheet
' B列に生年月日が入力されていて、C列に年齢を出力
lastRow = .Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To lastRow ' 2行目から最終行まで処理
birthday = .Cells(i, 2).Value
age = Int((Date - birthday) / 365.25)
.Cells(i, 3).Value = age
Next i
End With
MsgBox "年齢計算が完了しました!", vbInformation
End Sub
コードの解説
コード部分 | 説明 |
---|---|
lastRow = .Cells(Rows.Count, 2).End(xlUp).Row | A列の最後の行を自動検出 |
birthday = .Cells(i, 2).Value | B列から生年月日を取得 |
age = Int((Date - birthday) / 365.25) | 今日の日付との差を365.25で割り、年齢を算出 |
.Cells(i, 3).Value = age | C列に年齢を出力 |
マクロ実行
さきほど入力したコードを実行すると、B列の生年月日から年齢を自動計算してC列に反映されています。

応用コード
年齢を「○歳」と表示としたい場合
.Cells(i, 3).Value = age & "歳"

生年月日が未入力の場合はスキップしたい場合
If IsDate(.Cells(i, 2).Value) Then
birthday = .Cells(i, 2).Value
age = Int((Date - birthday) / 365.25)
.Cells(i, 3).Value = age
End If

コメント