訪問して頂きありがとうございます。まさふくろーです。
この記事では、生年月日から年齢を求める方法をご紹介します。
生年月日から年齢を求める
使用する関数
DateDiff関数
【ACCESS VBA】2つの指定した日付の間隔を求めるには?
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 | ー | 週の始まりの曜日を表す定数または値を指定します。 |
省略した場合は、日曜日となります。 |
||
指定する定数または値は、以下の表になります。 | ||
firstweekofyear |
ー | 年度の第1週を表す定数または値を指定します。 |
省略した場合は、1月1日を含む週が第1週となります。 |
||
指定する定数または値は、以下の表になります。 |
引数「format」に指定する記号(日付・時刻)
記号 | 内容 |
: | 時刻の区切り記号 |
/ | 日付の区切り記号 |
d | 日の先頭に「0」を付けないで表示(1〜31) |
dd | 日の先頭に「0」を付けて表示(01〜31) |
m | 月の先頭に「0」を付けないで表示(1〜12)。 |
mm | 月の先頭に「0」を付けて表示(01〜12)。 |
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」に指定する定数と値
定数 | 値 | 内容 |
vbSunday |
1 | 日曜日 (既定値) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
引数「firstweekofyear」に指定する定数と値
定数 | 値 | 内容 |
vbFirstJan1 |
1 | 1月1日を含む週を年度の第1週とする (既定値) |
vbFirstFourDays | 2 | 7日のうち、少なくとも4日が新年度に含まれる週を年度の第1週とする |
vbFirstFullWeek | 3 | 全体が新年度に含まれる最初の週の値を、年度の第1週とする |
年齢を求める式
IIf(Format(birthday, "mm/dd") > Format(Date, "mm/dd"), DateDiff("yyyy", birthday, Date) - 1, DateDiff("yyyy", birthday, Date))
式の解説 |
生年月日(birthday)と現在日(Date)から年齢を求める基本の式は、「DateDiff("yyyy",birthday,Date)」で求めることができます。 |
しかし、この式では誕生月に関係なく計算されてしまいます。 |
誕生月を考慮するにはまず、「Format(birthday,"mm/dd")>Format(Date(),"mm/dd")」という条件式を指定します。 |
この条件式では、生年月日(birthday)と現在日(Date)を「月日」で比較し、 |
生年月日のほうが大きい場合は、「DateDiff("yyyy",birthday,Date)-1」のように、年齢を求めてから「-1」します。これは、まだ誕生日を迎えていないためです。 |
生年月日のほうが小さい場合は、「DateDiff("yyyy",birthday,Date)」で年齢を求めます。 |
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 |
Private Sub Sample() Dim value As Integer Dim birthday As Date birthday = #11/30/1990# value = IIf(Format(birthday, "mm/dd") > Format(Date, "mm/dd"), DateDiff("yyyy", birthday, Date) - 1, DateDiff("yyyy", birthday, Date)) MsgBox "年齢:" & value End Sub |
1 | Subプロシージャ「Sample」を作成。 |
6 |
誕生日を、日付型変数「birthday」に代入します。 |
8 | 誕生日と現在日から年齢を求め、数値型変数「value」に代入します。 |
10 | 変数「value」の値を、メッセージボックスに表示します。 |
実行結果
関連記事
最後まで読んでいただき、ありがとうございました!
本のまとめ関連記事はこちら