エクセルバージョン
マイクロソフト365
指定した日付から曜日の整数が取得できるWeekday関数についてです。
それではいってみましょう!
Menu
Weekday関数
指定した日付から、曜日の整数が含まれる Variant (Integer) を返します。
構文
weekday(date,[firstdayofweek])
[]は省略可です。
引数
Weekday関数 | 必須/省略可 | 詳細 |
date 第1引数 | 必須 | 日付を指定。 |
firstdayofweek 第2引数 | 省略可 | 週の曜日の並びの順番を定数か値で指定。 |
第2引数firstdayofweekの詳細
定数 | 値 | 説明 |
vbUseSystem | 0 | NLS API 設定を使用します。 |
vbSunday | 1 | 日曜日 (既定) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
戻り値
定数 | 値 | 説明 |
vbSunday | 1 | 日曜日 |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
vbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
VBAサンプル
サンプル1
第2引数の指定なしは下記の順です。
1 (日曜) ~ 7 (土曜) の整数→ 1(日),2(月),3(火),4(水),5(木),6(金),7(土)
1 2 3 4 5 6 | Sub weekdayTest1() '2021/7/21(水)を検索 '水曜の4が返る Debug.Print Weekday("2021/7/21") '【結果】4 End Sub |
サンプル2
第2引数にvbMondayを指定した場合は下記のような月曜からの順番です。
1 (月曜) ~ 7 (日曜) の整数 → 1(月),2(火),3(水),4(木),5(金),6(土),7(日)
1 2 3 4 5 6 7 | Sub weekdayTest2() '2021/7/21(水)を第2引数をvbMondayで検索 '水曜の3が返る Debug.Print Weekday(#7/21/2021#, vbMonday) '【結果】3 '月曜から数えると水曜は3 End Sub |
サンプル3
IF文で戻り値の定数が土曜(vbSaturday)か日曜(vbSunday)を判定します。
土曜か日曜だったら → 本日は休業日です。
それ以外は → 営業中です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub weekdayTest3() '2021/7/25(日)検索 '変数 Dim testDay As Integer '検索する日付 testDay = Weekday("2021/7/25") 'IFで休日と平日の条件分岐 If testDay = vbSaturday Or testDay = vbSunday Then Debug.Print "本日は休業日です。" Else Debug.Print "営業中です。" End If '【結果】本日は休業日です。 End Sub |
まとめ
サンプルのようにWeekday関数の曜日の戻り値を利用すれば、IF文で条件分岐させたりできるので、曜日別で処理を振り分けたい場合は、是非ご使用してみてください!
以上です。
日付の変換
【関数】(DATEVALUE)文字形式の日付をシリアル値の日付に変換
【関数】(YEAR,MONTH,DAY)日付から年,月,日を取得
時間
【VBA】(TimeValue)文字列の時間や数式から時刻を取得
【VBA】(TimeSerial)時,分,秒を指定して時刻を取得
【VBA】(Hour,Minute,Second)時,分,秒を分けて取得
現在の日時,日付
曜日や週
【VBA】(WeekdayName)数値や定数を指定で曜日取得
土日や祝日
【関数】(WORKDAY)土日,祝日,指定日を除いた日付を取得
【関数】(NETWORKDAYS)土日,祝日,指定日を除いた日数を取得