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

 

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

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

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

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

・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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!