Microsoft Excel VBA - 年齢を計算するユーザー定義関数(年月日分離型)
◆Excek 2019 動作確認済このページは、Excelで年齢を計算するユーザー定義関数について記載しています
◆詳細
顧客名簿などを汎用機からのデータをテキスト出力し、Excelで読み込んだ場合、生年月日が次のように年号、年、月、日がそれぞれのセルに入力されていることがあります。 このような場合に、年齢を計算するユーザー定義関数をご紹介します。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
佐々木 次郎 |
|
50
|
3
|
1
|
|
|
|
井上 三郎 |
|
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」としてください。
▼ページトップへ