Microsoft Excel VBA - 年齢を計算するユーザー定義関数(年月日分離型)

◆Excek 2019 動作確認済

このページは、Excelで年齢を計算するユーザー定義関数について記載しています

◆詳細


顧客名簿などを汎用機からのデータをテキスト出力し、Excelで読み込んだ場合、生年月日が次のように年号、年、月、日がそれぞれのセルに入力されていることがあります。 このような場合に、年齢を計算するユーザー定義関数をご紹介します。
A
B
C
D
E
F
1
氏   名
年号
年齢
2
佐々木 次郎
S
50
3
1
 
3
井上 三郎
H
10
1
5
 

◆Sample code

1.次のコードを標準モジュールに記述します。

Function 年齢計算(年号, 年, 月, 日, 基準日 As Date)
    Dim 年数 As Integer
    Dim Mydate As Date
    
    If IsNull(日) Then
        Exit Function
    End If
    
    Select Case 年号
        Case "M"
            Mydate = DateSerial(年 + 1867, 月, 日)
        Case "T"
            Mydate = DateSerial(年 + 1911, 月, 日)
        Case "S"
            Mydate = DateSerial(年 + 1925, 月, 日)
        Case "H"
            Mydate = DateSerial(年 + 1988, 月, 日)
        Case Else
            Exit Function
    End Select
    
    年数 = DateDiff("yyyy", Mydate, 基準日)
    
    'この年数はかぞえ年なので、生年月日が基準日よりも後かどうかを
    '以下の処理で調べ、そうなら年数から1を引く。
    '基準日の月よりも生年月日の方が大きければ生年月日前
    If DatePart("m", Mydate) > DatePart("m", 基準日) Then
        年数 = 年数 - 1
    End If
    
    '基準日の月と生年月日が等しい場合で生年月日の日付が後なら生年月日前
    If DatePart("m", Mydate) = DatePart("m", 基準日) Then
        If DatePart("d", Mydate) > DatePart("d", 基準日) Then
            年数 = 年数 - 1
        End If
    End If
    
    '求めた年数を関数(年齢計算)にセットする。
    年齢計算 = 年数
End Function
  

2.エクセルワークシートで計算式を入力します。
セルG1に基準日がyy/mm/dd形式で入力されているとするとセルF2に
=年齢計算(B2,C2,D2,E2,$G$1) と入力すると年齢が表示されます。


基準日を必要とせず、計算する日現在の年齢を計算させたい場合は、引数の「基準日 as Date」を削除し、ステートメント中のすべての「基準日」を「Now」としてください。



▼ページトップへ