年月日の取り出し

日付の年のみ、月のみ等を取り出すときに使用する関数の説明をします。

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 名で、現在も一緒に執筆をできる有志を募集中。