【ACCESS】生年月日から年齢を求める方法

訪問して頂きありがとうございます。まさふくろーです。

この記事では、生年月日から年齢を求める方法をご紹介します。

生年月日から年齢を求める

「名簿一覧」テーブルの「生年月日」フィールドから「年齢」を求める。

 

使用するサンプルデータ

名簿一覧
氏名 生年月日
梅津勝彦 1971/10/30
織田湊大 1989/11/28
宮坂真凛 1977/10/10
筒井直子 1980/09/14
植松莉菜 1970/12/17
猪股雅也 1978/10/29
柿崎賢三 1994/06/18
杉田歌子 1994/04/05
大久保遥菜 1970/09/04
加瀬孝次 1999/06/30

使用する関数

DateDiff関数

書式 DateDiff(interval, date1, date2 [, firstdayofweek] [, firstweekofyear])
説明 2つの指定した日付の時間間隔を取得する。
指定項目 必須 説明
interval date1とdate2の時間間隔の計算に使用する時間単位を指定。
date1 計算の対象となる日付を指定。時間間隔の計算式は、date2-date1となります。つまり、date1 < date2の場合「正の値」、date1 > date2の場合「負の値」になります。
date2 計算の対象となる日付を指定。時間間隔の計算式は、date2-date1となります。つまり、date1 < date2の場合「正の値」、date1 > date2の場合「負の値」になります。
firstdayofweek 週の始まりの曜日を表す値。省略した場合は、日曜日となります。※値の他に定数も用意されていますが、定数はVBAのみで使用可能です。
firstweekofyear 年の第1週を指定する値。省略した場合は、1月1日を含む週が第1週となります。※値の他に定数も用意されていますが、定数はVBAのみで使用可能です。
指定項目:「interval」で指定できる単位
単位 説明
yyyy
m
d
h
n
s
q 四半期
y 年間通算日
w 平日
ww
指定項目:「firstdayofweek」で指定できる定数
説明
1 日曜日(既定値)。指定しなければこの値が設定されます。
2 月曜日
3 火曜日
4 水曜日
5 木曜日
6 金曜日
7 土曜日
指定項目:「firstweekofyear」で指定できる定数
説明
1 1月1日が含まれる週から開始 (既定値)。指定しなければこの値が設定されます。
2 年の少なくとも 4 日が含まれる最初の週から開始。
3 年の最初の完全な週から開始。

Date関数

書式 Date()
説明 現在のシステムの日付(パソコンの日付)を取得する。

IIf関数

書式 IIf(expr , truepart , falsepart)
説明 式の評価によって、2つの値(True、False)のいずれか1つを返す。
指定項目 必須 説明
expr 評価する式を指定。
truepart 評価する式(expr)がTrueの場合に、設定する値または式を指定
falsepart 評価する式(expr)がFalseの場合に、設定する値または式を指定

Format関数

書式 Format(Expression, [Format], [FirstDayOfWeek], [FirstWeekOfYear])
説明 フィールドの値(Expression)を、[Format]で指定した書式に変換した値を取得する。
指定項目 必須 説明
Expression フィールド名を指定。
Format 有効な名前付き書式、またはユーザー定義書式を指定。
FirstDayOfWeek 週の始まりの曜日を表す値。省略した場合は、日曜日となります。※値の他に定数も用意されていますが、定数はVBAのみで使用可能です。
FirstWeekOfYear 年の第1週を指定する値。省略した場合は、1月1日を含む週が第1週となります。※値の他に定数も用意されていますが、定数はVBAのみで使用可能です。
指定項目:「Format」でよく使用する日付・時刻のユーザー定義書式
記号 説明
: 時刻の区切り記号
/ 日付の区切り記号
d 日の先頭に「0」を付けないで表示(1〜31)
dd 日の先頭に「0」を付けて表示(01〜31)
m 月の先頭に「0」を付けないで表示(1〜12)。h または hh の直後に m が続く場合は、月ではなく分が表示されます。
mm 月の先頭に「0」を付けて表示(01〜12)。h または hh の直後に m が続く場合は、月ではなく分が表示されます。
yy 西暦の年を下2桁の数値で表示 (00〜99)
yyyy 西暦の年を4桁の数値で表示(100〜9999)
h 時の先頭に「0」を付けないで表示(0〜23)
hh 時の先頭に「0」を付けて表示(00〜23)
n 分の先頭に「0」を付けないで表示(0〜59)
nn 分の先頭に「0」を付けて表示(00〜59)
s 秒の先頭に「0」を付けないで表示(0〜59)
ss 秒の先頭に「0」を付けて表示(00〜59)
指定項目:「FirstDayOfWeek」で指定できる定数
説明
1 日曜日(既定値)。指定しなければこの値が設定されます。
2 月曜日
3 火曜日
4 水曜日
5 木曜日
6 金曜日
7 土曜日
指定項目:「FirstWeekOfYear」で指定できる定数
説明
1 1月1日が含まれる週から開始 (既定値)。指定しなければこの値が設定されます。
2 年の少なくとも 4 日が含まれる最初の週から開始。
3 年の最初の完全な週から開始。

抽出手順

選択クエリの作成

テーブルの追加

①「作成」タブをクリック⇒②<クエリ>グループの「クエリデザイン」をクリックします。

 

①「テーブル」タブをクリック⇒②「名簿一覧」を選択⇒③「追加」ボタンをクリック⇒④「閉じる」ボタンをクリックします。

 

使用するフィールドの追加

「Ctrl」キーを押しながら、左クリックで「氏名」「生年月日」フィールドを選択します。

 

左クリックした状態で、「デザイングリッド」上にポインターを移動し、ドロップします。

 

 

すると、「デザイングリッド」上に、選択したフィールドが表示されます。

 

年齢を求める式の設定

データグリッドの「生年月日」フィールドのとなりに、以下式を入力し、「Enter」キーを押します。

 

IIf(Format(生年月日,"mm/dd")>Format(Date(),"mm/dd"),DateDiff("yyyy",生年月日,Date())-1,DateDiff("yyyy",生年月日,Date()))

 

すると、「式1: IIf(Format([生年月日],"mm/dd")>Format(Date(),"mm/dd"・・・」と自動変換されます。

 

式の解説
生年月日と現在日から年齢を求める基本の式は、「DateDiff("yyyy",生年月日,Date())」で求めることができます。

しかし、この式では誕生月に関係なく計算されてしまいます。

誕生月を考慮するにはまず、「Format(生年月日,"mm/dd")>Format(Date(),"mm/dd")」という条件式を指定します。

この条件式では、生年月日と現在日を「月日」で比較し、

生年月日のほうが大きい場合は、「DateDiff("yyyy",生年月日,Date())-1」のように、年齢を求めてから「-1」します。これは、まだ誕生日を迎えていないためです。

生年月日のほうが小さい場合は、「DateDiff("yyyy",生年月日,Date())」で年齢を求めます。

フィールド名の変更

フィールド名を「式1」から「年齢」に変更します。

 

クエリの実行

①「デザイン」タブをクリック⇒②<結果>グループの「実行」をクリックします。

 

最後まで読んでいただき、ありがとうございました!

本のまとめ関連記事はこちら