Excel VBA Weekday・WeekdayName関数で日付から曜日を取得する方法

VBA関数

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の定数一覧
定数名説明
vbUseSystem0各国語対応APIの設定値を使います。
vbSunday1日曜(既定値)
vbMonday2月曜
vbTuesday3火曜
vbWednesday4水曜
vbThursday5木曜
vbFriday6
vbSaturday7土曜
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」で曜日名に変換しています。

タイトルとURLをコピーしました