ExcelVBAのWeekday関数を使用して、指定した日付の曜日を取得する方法をご説明します。
Weekday関数は曜日を数値で返しますので、実はWeekday関数だけでは「日曜日」などの曜日の表記はできません。
曜日の表記を行うにはWeekdayName関数を使用して変換します。
2つの関数を使用する事で難しく感じるかもしれませんが、それほど難しくありませんので、ぜひ覚えてみてください。
すぐにサンプルコードを見たい方はもくじの「4.曜日名を取得するサンプルコード」まで読み飛ばしてください。
月名を取得する方法は「MonthName関数で数字を指定した月名にする方法」をご覧下さい。
1.Weekday関数の使い方
Weekday関数は指定した日付の曜日を1(日曜日)~7(土曜日)の整数値で取得します。
構文は次のように記述します。
Weekday(date)
指定した日付の週の最初の曜日を取得する事も可能で、次のように記述します。
Weekday(date,[firstdayofweek])
dateには曜日を調べたい日付を指定します。
firstdayofweekは省略可能ですが、次の種類を指定する事が可能です。
省略すると「vbSunday」が既定値となります。
曜日 | 説明 |
vbSunday | 日曜~土曜までを 1 ~ 7 として返します。 |
vbMonday | 月曜~日曜までを 1 ~ 7 として返します。 |
vbTuesday | 火曜~月曜までを 1 ~ 7 として返します。 |
vbWednesday | 水曜~火曜までを 1 ~ 7 として返します。 |
vbThursday | 木曜~水曜までを 1 ~ 7 として返します。 |
vbFriday | 金曜~木曜までを 1 ~ 7 として返します。 |
vbSaturday | 土曜~金曜までを 1 ~ 7 として返します。 |
2.Weekday関数のサンプルコード
指定した日付の曜日を1(日曜日)~7(土曜日)の整数値で取得するサンプルコードです。
2018/7/1がちょうど日曜なので2018/7/1~を2018/7/7例にしたいと思います。
Sub Sample1()
Debug.Print Weekday("2018/7/1") '1(日曜)
Debug.Print Weekday("2018/7/2") '2(月曜)
Debug.Print Weekday("2018/7/3") '3(火曜)
Debug.Print Weekday("2018/7/4") '4(水曜)
Debug.Print Weekday("2018/7/5") '5(木曜)
Debug.Print Weekday("2018/7/6") '6(金曜)
Debug.Print Weekday("2018/7/7") '7(土曜)
End Sub
3.WeekdayName関数の使い方
WeekdayName関数は、指定した曜日の名前を返します。
1(日曜)~7(土曜)の曜日の名前を取得します。
構文は次のように記述します。
WeekdayName(Weekday[,Abbreviate][,Firstdayofweek])
引数一覧
引数名 | 省略 | 説明 |
Weekday | 必須 | 曜日を示す数値を指定します。 |
Abbreviate | 省略可能 | 曜日名の省略を指定します。 曜日名を省略するときはTrueを指定します。 |
Firstdayofweek | 省略可能 | 曜日の最初の日を示す数値を指定します 。 |
Firstdayofweekの定数一覧
定数名 | 値 | 説明 |
vbUseSystem | 0 | 各国語対応APIの設定値を使います。 |
vbSunday | 1 | 日曜(既定値) |
vbMonday | 2 | 月曜 |
vbTuesday | 3 | 火曜 |
vbWednesday | 4 | 水曜 |
vbThursday | 5 | 木曜 |
vbFriday | 6 | 金 |
vbSaturday | 7 | 土曜 |
WeekdayName関数のサンプルコード
Sub Sample2()
Debug.Print WeekdayName(1) '1(日曜)
Debug.Print WeekdayName(2) '2(月曜)
Debug.Print WeekdayName(3) '3(火曜)
Debug.Print WeekdayName(4) '4(水曜)
Debug.Print WeekdayName(5) '5(木曜)
Debug.Print WeekdayName(6) '6(金曜)
Debug.Print WeekdayName(7) '7(土曜)
End Sub
4.曜日名を取得するサンプルコード
Weekday関数とWeekdayName関数の使い方がわかりましたので、2つの関数を組み合わせて、指定した日付の曜日名を取得したいと思います。
2つの関数を組み合わせるという事で難しく思うかもしれませんが、コードは非常にシンプルで難しくありません。
次のようにセルに日付が入力されたデータを使用します。
Sub Sample3()
Dim i As Long
With ActiveSheet
For i = 2 To 20
.Cells(i, 2) = WeekdayName(Weekday(.Cells(i, 1)))
Next i
End With
End Sub
WeekdayName(Weekday(.Cells(i, 1)))の部分が2つの関数が組み合わさっている部分です。
「Weekday(.Cells(i, 1))」の部分で日付を数値で曜日を取得しています。
その数値を「WeekdayName」で曜日名に変換しています。