ExcelVBA 生年月日から現在年齢を自動計算|情報管理に活用する方法

 

ExcelVBA 生年月日から現在年齢を自動計算|情報管理に活用する方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA 生年月日から現在年齢を自動計算|シーン

以下のシーンで利用します。

1.顧客リストの年齢計算(名簿管理など)

2.従業員の年齢集計(定年対象者の判定など)

31.イベント対象者の絞り込み(年齢制限のあるイベントなど)

 

Excel VBA 生年月日から現在年齢を自動計算サンプルコード

A1セルの生年月日(YYYY/MM/DD形式)を元に、現在の年齢を計算し、B1セルに表示する

Option Explicit

Sub CalculateAge()
    Dim birthDate As Date
    Dim todayDate As Date
    Dim age As Integer
    
    ' 生年月日をA1セルから取得
    birthDate = Range("A1").Value
    ' 今日の日付
    todayDate = Date
    ' 年齢計算(誕生日が過ぎていない場合は-1)
    age = Year(todayDate) - Year(birthDate)
    If DateSerial(Year(todayDate), Month(birthDate), Day(birthDate)) > todayDate Then
        age = age - 1
    End If
    
    ' B1セルに年齢を表示
    Range("B1").Value = age
End Sub

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

・Year(todayDate) - Year(birthDate) で単純な年齢差を求める
・誕生日が来ていない場合は -1 することで正確な年齢を計算

A列(A2:A100)に生年月日リストがある場合、B列(B2:B100)に年齢を一括入力する

Option Explicit

Sub CalculateAgesForList()
    Dim lastRow As Long
    Dim i As Long
    Dim birthDate As Date
    Dim todayDate As Date
    Dim age As Integer
    
    ' データの最終行を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    todayDate = Date
    
    ' ループで各行の年齢を計算
    For i = 2 To lastRow
        birthDate = Cells(i, 1).Value
        age = Year(todayDate) - Year(birthDate)
        
        ' 誕生日が来ていない場合は-1
        If DateSerial(Year(todayDate), Month(birthDate), Day(birthDate)) > todayDate Then
            age = age - 1
        End If
        
        ' B列に年齢を出力
        Cells(i, 2).Value = age
    Next i
End Sub

 

・Cells(Rows.Count, 1).End(xlUp).Row で データの最終行を取得
・For i = 2 To lastRow で A列の全データに対してループ処理
・B列に年齢を自動出力

ユーザーフォームに 「生年月日を入力するテキストボックス」 と 「年齢を計算して表示する(フォームモジュールに記述)

Option Explicit

Private Sub CommandButton1_Click()
    Dim birthDate As Date
    Dim todayDate As Date
    Dim age As Integer
    
    ' テキストボックスから生年月日を取得
    birthDate = CDate(TextBox1.Value)
    todayDate = Date
    
    ' 年齢計算
    age = Year(todayDate) - Year(birthDate)
    If DateSerial(Year(todayDate), Month(birthDate), Day(birthDate)) > todayDate Then
        age = age - 1
    End If
    
    ' ラベルに年齢を表示
    Label1.Caption = "年齢: " & age & "歳"
End Sub

 

・CDate(TextBox1.Value) で テキストボックスの入力を日付型に変換
・Label1.Caption を 変更して結果を表示

注意点

1. 入力データが正しい形式か確認する
・YYYY/MM/DD 形式以外でエラーが出る可能性がある
・IsDate 関数で日付チェックをするのも有効

If Not IsDate(TextBox1.Value) Then
MsgBox "正しい日付を入力してください", vbExclamation
Exit Sub
End If

2. 未来の日付はエラーにするべきか検討する
・If birthDate > Date Then MsgBox "未来の日付は無効です"

3. 年齢計算のズレに注意する
・誕生日がまだ来ていない場合の処理(-1 する)を忘れない

 

Excel VBA 生年月日から現在年齢を自動計算まとめ

方法 特徴 使いどころ
基本の年齢計算 1つのセルの年齢を計算 単独の年齢チェック
一括計算 一覧の年齢を一括で計算 名簿管理、従業員情報
ユーザーフォーム テキストボックスで入力して計算 手動入力が必要な場面

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問