訪問して頂きありがとうございます。まさふくろーです。
この記事では、生年月日から年齢を求める方法をご紹介します。
目次
生年月日から年齢を求める
「名簿一覧」テーブルの「生年月日」フィールドから「年齢」を求める。
使用するサンプルデータ
氏名 | 生年月日 |
---|---|
梅津勝彦 | 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」から「年齢」に変更します。
クエリの実行
①「デザイン」タブをクリック⇒②<結果>グループの「実行」をクリックします。
最後まで読んでいただき、ありがとうございました!