
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ベーシック選択問題集をご用意しました。
・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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。