Microsoft Accessで関数を利用して満年齢の算出する



Microsoft Accessで情報を処理していく中で、ユーザーの情報を管理していくことがよくあります。
業態によってはどのような情報を取り扱うかは変わりますが、名前からメールアドレス、住所、電話番号などを管理して処理していくことでしょう。

年齢を取り扱う場合には、時が経つにつれて人は歳を取るので情報が変化します。
ユーザーの生年月日の情報があれば、生年月日と現在の年の差分を計算して年齢を算出することができますが、より正しい情報を管理するには、満年齢を把握しておく必要があります。

ここでは、Microsoft Accessで満年齢を算出する方法をご紹介します。

まず、ざっくりとした年齢の算出では、「年齢」の演算フィールドの作成でDateDiff関数を利用し、古い日付に「生年月日」のフィールドを指定します。

Microsoft Accessで満年を算出する



上の画像は、データシートビューとデザインビューの構造です。
利用している関数については以下のとおりです。

DateDiff関数の書式

DateDiff(“yyyy”,[生年月日],Date())

DateDiff関数のみでは年の差だけで算出するので、誕生日が過ぎてない場合でも年齢が1つ増えてしまします。

満年齢を算出する


満年齢を算出するには、条件によって値を調整する方法をとります。
それには以下の関数を利用していきます。

利用する関数

IIf関数
IIf(条件, 真の場合に返す値, 偽の場合に返す値)

DateSerial関数
DateSerial(年, 月, 日)

DateDiff関数
DateDiff(日付の単位, 古い日付, 新しい日付)


ここで紹介している、生年月日と年齢の演算フィールドのテーブルの構造では、以下の記述で満年齢を算出します。

満年齢の算出サンプル

IIf(DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date(),DateDiff(“yyyy”,[生年月日],Date())-1,DateDiff(“yyyy”,[生年月日],Date()))


IIf関数の引数は以下の内容となります。

▼条件
//今年の誕生日が今日より大きい時
DateSerial(Year(Date()),Month([生年月日]),Day([生年月日]))>Date()

▼真の場合
//古い日付(生年月日)と新しい日付(本日)の年の差分から計算した年齢から1を引く
DateDiff(“yyyy”,[生年月日],Date())-1

▼偽の場合
//古い日付(生年月日)と新しい日付(本日)の年の差分から計算した年齢
DateDiff(“yyyy”,[生年月日],Date())


IIf関数の条件分岐でしていることは、今年の誕生日と今日を比較して、誕生日より大きい条件を設定します。
真の場合は、誕生日がまだなので年の差分から1を引いた年齢に、偽の場合は誕生日を過ぎたのでそのまま年の差分を年齢とします。

他にも、Format関数を利用した算出方法もあります。

Format関数を利用した算出


IIf関数の条件でFormat関数を利用します。
真の場合と偽の場合は、DateSerial関数を利用した時と同じになります。

Format関数の書式

Format([データ],[書式])

Format関数では、指定した形式のデータを取得することができます。

Format関数を利用したサンプル

IIf(Format(Date(),”mmdd”)<Format([生年月日]),”mmdd”),DateDiff(“yyyy”,[生年月日],Date())-1,DateDiff(“yyyy”,[生年月日],Date()))


条件ではFormat関数を利用して、誕生日を超えているか超えていないかを把握します。
月と日だけを比較して判断していきます。

▼条件
Format(Date(),”mmdd”)<Format([生年月日]),”mmdd”)

▼真の場合
DateDiff(“yyyy”,[生年月日],Date())-1

▼偽の場合
DateDiff(“yyyy”,[生年月日],Date())


真の場合と偽の場合は、DateSerial関数を利用した時と同じになります。

より現在の正確な情報を管理するとなると、年齢では満年齢を把握しておく必要があります。
月と日の比較し、その条件によって数値を計算する流れになります。

満年齢を算出する際には、ぜひ参考にしてください。