Microsoft Excel VBA - 基準日現在の年齢を計算するユーザー定義関数

◆Excel 2019 動作確認済

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

満年齢を計算するとき、ExcelのDATEDIF関数を利用します。

=DATEDIF(D5,"2007/4/1","y")
この関数をユーザー定義関数で定義してみます。

◆Sample code

1.次のコードを標準モジュールに記述します。
Function 年齢計算(Mydate As Date, 基準日 As Date)
'**********************************
'機能:基準日における年齢計算を行う。
'**********************************

  Dim 年数 As Integer '年齢を格納する変数
  
  If IsNull(Mydate) Then
      Exit Function
  End If

  年数 = DateDiff("yyyy", Mydate, 基準日)
  
  'この年数はかぞえ年なので、生年月日が今日よりも後かどうかを
  '以下の処理で調べ、そうなら年数から1を引く。
  '10月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.エクセルワークシートで計算式を入力します。

A
B
C
D
1
氏   名
生年月日
年齢
基準日
2
佐々木 次郎
1980/04/01
40
2020/03/31
3
井上 三郎
1965/04/01
55
2020/03/31

セルB2に生年月日、セルD2に基準日がyy/mm/dd形式で入力されているとするとセルC2に
=年齢計算(B2,D2) と入力すると年齢が表示されます。




▼ページトップへ