VBAで生年月日から年齢を求める方法

VBAで生年月日から年齢を求める方法には以下の2通りあります。

  1. ワークシート関数のDATEDIF関数を使う方法
  2. VBA関数のDateDiff関数を使う方法

どちらでもいいです。

なお、ワークシート関数を使う方法にはWorksheetFunctionプロパティを利用する方法もありますが、WorksheetFunctionプロパティにDateDif関数が存在しないため利用できません。

1. ワークシート関数のDateDif関数を使う方法

Application.Evaluateメソッドを使ってワークシート関数のDATEDIF関数を実行します。

DATEDIF関数から直接年齢が算出できるためコードが単純になります。

ワークシート関数を使う方法については「VBAからExcelのワークシート関数を使う」をご参照ください。

2. Date型の変数の差から年齢を求める方法

VBA関数のDateDiff関数を使って年齢を求めます。

ただ、DateDiff関数で年齢を求めるには工夫が必要です。

DateDiff関数は年度の差を算出しますので、2017/12/31と2018/1/1のように365日経ってなくても年が変わったら1年としてカウントします。

その問題を回避するために引数の月日が処理日の月日に達しているかをチェックし、未達であれば年数を減らしています。

 

使い方

上の2つの年齢計算関数はどちらも同じ使い方になります。