3/12/2023

Excel。VBA。データを読み込んだ日付から曜日を表示するにはどうしたらいい【day of week】

Excel。VBA。データを読み込んだ日付から曜日を表示するにはどうしたらいい

<Excel VBA:WeekdayName+Weekday関数>

大量なデータを読み込んだら、日付は入力されていましたが、曜日は入力されていませんでした。


自分自身で調べて入力するよりも、関数をつかって算出させるほうが楽ですが、データを読み込むたびに、関数を作るのも面倒です。

Excel VBA:WeekdayName+Weekday関数

そこで、Excel VBAでプログラム文をつくって対応してみてはどうでしょうか


Sub 曜日()

    Dim i As Integer

    Dim lastrow As Long

    

    lastrow = Cells(Rows.Count, "a").End(xlUp).Row


    For i = 2 To lastrow

        Cells(i, "b") = WeekdayName(Weekday(Cells(i, "A")), True)

    Next

End Sub


それでは、実行してみましょう。


WeekdayName関数とWeekday関数を組み合わせてつかうことで、曜日を簡単に算出することができます。


プログラム文を確認してきます。


最初は、変数宣言ですね。

Dim i As Integer

Dim lastrow As Long


lastrow = Cells(Rows.Count, "a").End(xlUp).Row

このlastrowには、データの最終行番号を代入させることで、この後のFor To Next文の繰り返しに使っています


For i = 2 To lastrow

    Cells(i, "b") = WeekdayName(Weekday(Cells(i, "A")), True)

Next


繰り返し文にある

WeekdayName(Weekday(Cells(i, "A")), True)


この行で日付から曜日を表示させているわけです。


「Weekday(Cells(i, "A"))」は、Excelにもある「Weekday関数」と同じで、日曜日を1、月曜日を2と算出してくれる関数です。


ただ、Weekday関数では、曜日に割り振られた番号を算出してくれるだけなので、番号をみて、すぐに何曜日なのかわかりません。


そこで、Excelにはない、「WeekdayName関数」をつかいます。

このWeekdayName関数は、1なら「日」と表示してくれる関数です。


Excelにはない関数もExcel VBAにはいろいろありますので、つかってみるといいかもしれませんね。