【ExcelVBA・マクロ】エクセルで生年月日から年齢を自動計算するマクロ【業務効率化】

ExcelVBA

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).RowA列の最後の行を自動検出
birthday = .Cells(i, 2).ValueB列から生年月日を取得
age = Int((Date - birthday) / 365.25)今日の日付との差を365.25で割り、年齢を算出
.Cells(i, 3).Value = ageC列に年齢を出力

マクロ実行

さきほど入力したコードを実行すると、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

コメント

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