年月日の取り出し
日付の年のみ、月のみ等を取り出すときに使用する関数の説明をします。
Year関数・Month関数・Day関数
それぞれ年・月・日を取り出す関数です。
年を取り出す関数
日付のデータから年のみ取り出します。以下構文です。
[構文]Year関数
Year(date)
date:元の日付
月を取り出す関数
日付のデータから月のみ取り出します。以下構文です。
[構文]Month関数
Month(date)
date:元の日付
日を取り出す関数
日付のデータから日のみ取り出します。以下構文です。
[構文]Day関数
Day(date)
date:元の日付
Year関数・Month関数・Day関数の例題
各関数の例題をまとめて、以下に示します。
[リスト9]Rei_YMD(日付関係.xlsm)
Sub Rei_YMD()
a = #1/8/2010#
c = Year(a) '(1)結果:2010
MsgBox (c)
c = Month(a) '(2)結果:1
MsgBox (c)
c = Day(a) '(3)結果:8
MsgBox (c)
End Sub
(1)は年、(2)は月、(3)は日を取り出しています。
Weekday関数・WeekdayName関数
週のデータを取り出す関数です。
週の番号取り出す関数
日付のデータから週のデータを取り出します。以下構文です。
[構文]Weekday関数
Weekday(date[,firstdayofweek])
date:元の日付
firstdayofweek:(省略可)週の始まりの曜日を表す定数。省略すると日曜日
構文のカッコにカンマ区切りで表しているのが引数です。[]で囲まれているものは省略可能であることを表します。
firstdayofweekの設定値はDateDiff関数と同じです。以下戻り値です。
定数 | 値 | 内容 |
---|---|---|
VbSunday | 1 | 日曜日 |
VbMonday | 2 | 月曜日 |
VbTuesday | 3 | 火曜日 |
VbWednesday | 4 | 水曜日 |
VbThursday | 5 | 木曜日 |
VbFriday | 6 | 金曜日 |
VbSaturday | 7 | 土曜日 |
1が戻ると指定日付は日曜日、2が戻ると指定日付は月曜日ということです。上記の表はfirstdayofweekが日曜日に指定しているからです。もし、firstdayofweekに金曜日を指定すると1の戻り値は金曜日を、2の戻り値は土曜日を表すことになります。
週名の文字列を取り出す関数
ExcelはWeekday関数で曜日の番号を受け取り、受け取った番号を渡して、実際の曜日の文字列を受け取ることができる、WeekdayName関数というものを持っています。以下構文です。
[構文]WeekdayName関数
WeekdayName(weekday[,abbreviate[,firstdayofweek]])
weekday:曜日を示す数値
abbreviate:(省略可)曜日名を省略するかどうかを示すプール値(True,False)
firstdayofweek:(省略可)週の始まりの曜日を表す定数。省略すると日曜日
構文のカッコにカンマ区切りで表しているのが引数です。[]で囲まれているものは省略可能であることを表します。
abbreviate引数は、省略するとFalseとなり、表示が金曜日の場合、「False:金曜日、True:金」となります。firstdayofweekの設定値はDateDiff関数と同じです。もし、firstdayofweekに金曜日を指定すると、weekdayの設定値で1は金曜日を、2は土曜日を表すことになります。
週の関数の例題
以下例題です。
[リスト10]Rei_Week(日付関係.xlsm)
Sub Rei_Week()
a = #1/8/2010#
c = Weekday(a) '(1)結果:6
MsgBox (c)
c = Weekday(a, vbThursday) '(2)2
MsgBox (c)
c = Weekday(a) '(3)結果:6
d = WeekdayName(c) ' 結果:金曜日
MsgBox (d)
c = Weekday(a, vbThursday) '(4)結果:2
d = WeekdayName(c, False, vbThursday) '結果:金曜日
MsgBox (d)
End Sub
日付に2010/1/8を設定しました。曜日は金曜日です。(1)は曜日の数値6(日曜日を1として)(2)は開始曜日を木曜日にしました。戻り値は2です。(3)は開始曜日を既定値の日曜日にして、数値を出し、WeekdayName関数で曜日の文字列を表示しています。(4)では開始曜日を木曜日にしてみました。WeekdayName関数ではちゃんと金曜日を表示しています。各国の習慣で開始曜日が違うものも、ちゃんとプログラムできます。
Hour関数・Minute関数・Second関数
時・分・秒を取り出す関数です。
時を取り出す関数
日付のデータから時のみ取り出します。以下構文です。
[構文]Hour関数
Hour(time)
time:元の時刻
0から23の数値で戻ります。
分を取り出す関数
日付のデータから分のみ取り出します。以下構文です。
[構文]Minute関数
Minut(time)
time:元の時刻
0から59の数値で戻ります。
秒を取り出す関数
日付のデータから秒のみ取り出します。以下構文です。
[構文]Second関数
Second(time)
time:元の時刻
0から59の数値で戻ります。
Hour関数・Minute関数・Second関数の例題
各関数の例題を以下に示します。
[リスト11]Rei_DateTime(日付関係.xlsm)
Sub Rei_DateTime()
a = #1:58:10 PM#
c = Hour(a) '(1)結果:13
MsgBox (c)
c = Minute(a) '(2)結果:58
MsgBox (c)
c = Second(a) '(3)結果:10
MsgBox (c)
End Sub
(1)で時、(2)で分、(3)で秒を表示しています。
まとめ
日付は1月が31日、2月は28日か29日・・・11月は30日、12月は31日と、月により日数が変わります。また2月のように4年に1回うるう年があり29日まであります。加えて100年に1度うるう年が無い年があります。日数計算をするとき、考慮しながら作成するのはたいへんです。今回説明した日付の関数があるということを覚えておけば、いざという時役に立つと思います。
WINGSプロジェクト 横塚利津子著/山田祥寛監修
<WINGSプロジェクトについて>テクニカル執筆プロジェクト(代表山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・雑誌/Web記事の執筆、講演等を幅広く手がける。2009年4月時点での登録メンバは30 名で、現在も一緒に執筆をできる有志を募集中。