EXCEL VBA Weekday関数・WeekdayName関数・日付から曜日を取得・祝日判定

 

 

EXCEL VBA Weekday関数・WeekdayName関数・日付から曜日を取得・祝日判定

 

 

 ●はじめに

今回説明するのは、WeekDay関数・WeekDayName関数の説明をいたします。まず、WeekDay関数は、日付に対応する曜日コードを返します。指定した日付に対して戻り値として1は、日・2は、月・・・として数値を返します。日付から曜日を取得する際に利用する関数です。次に、WeekDayName関数は、曜日コードから曜日を返す関数です。指定した曜日コード1は、日曜日・曜日コード2は、月曜日・・となります。WeekDay関数・WeekDayName関数共に、併せて利用する機会があるので共に覚えると便利な関数です。それでは、サンプルプログラムを交えて順番に説明いたします。

 

 

 ●書式の説明  (WeekDay関数・WeekDayName関数)

● WeekDay関数を利用するには、下記の通りに設定を行います。

  WeekDay(日付)

戻り値 1~7

定数
説明(内容)
vbSunday1日曜
vbMonday月曜
vbTuesday火曜
vbWednesday4水曜
vbThursday5木曜
vbFriday6金曜
vbSaturday7土曜

【使用例】

【実行後】
 
2020年12月31日は、木曜日なので【5】を返します。

● WeekDayName関数を利用するには、下記の通りに設定を行います。

  WeekDayName(日付の戻り値)

※WeekDayの戻り値(1~7)に対して、1:日曜日・2:月曜日・3:火曜日・4:水曜日・5:木曜日・6:金曜日・7:土曜日を返します。


WeekDayName(日付の戻り値,True)

※引数:曜日の省略「True ⇒省略する Falseまた設定なし ⇒ 省略しない」
※WeekDayの戻り値(1~7)に対して、1:日・2:月・3:火・4:水・5:木・6:金・7:土を返します。

【使用例】:曜日の表示(曜日の省略無し)

 


【実行後】

 ※2020年12月31日の曜日は、木曜日なので「木曜日」を返します。

【使用例】:曜日の表示(曜日の省略あり)

 


【実行後】

※2020年12月31日の曜日は、木曜日なので「木」(省略)を返します。

 

 

指定した範囲の日付に対して曜日を表示します。(土日・平日色分け)

 

 

 ●プログラム説明 (サンプル①) WeekDay関数

下記のサンプルプログラムは、指定した日付に対して、曜日を表示するサンプルプログラムです。

【プログラム説明】
①A列の日付に対して曜日を表示します。
②曜日表示する際に、日曜日は、赤、土曜日は、青、その他平日は黒で色分けを行います。

【プログラム実行条件】
・A列に日付を入力します。(連続)セルA2以降

 

 

●実行前~実行後 ※プログラム実行後、A列に指定した日付に対して、B列に曜日が表示されました。今回は、Select Caseを使って曜日(個別入力した)を表示しました。
(画面クリックして拡大)

 

 

指定した範囲の日付に対して曜日を表示します。(土日・平日色分け)

 

 

 ●プログラム説明 (サンプル②) WeekDay関数

下記のサンプルプログラムは、指定した日付に対して、曜日を表示するサンプルプログラムです。サンプル①のSelect Caseを使うより、Chooseを利用した方がシンプルにプログラムを作成する事が出来ます。

【プログラム説明】
①A列の日付に対して曜日を表示します。
②曜日表示する際に、曜日ごとに色分け(7色)を行いました。

【プログラム実行条件】
・A列に日付を入力します。(連続)セルA2以降

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、A列に指定した日付に対して、B列に曜日が表示されました。今回は、Chooseを使って曜日(個別入力した)を表示して曜日別日に色分けを行いました。
(画面クリックして拡大)

 

 

 

 

指定した日付から31日分の日付を表示し、曜日ごとに日付の色分けを行います。

 

 

 ●プログラム説明 (サンプル③)  WeekDay関数

下記のサンプルプログラムは、指定した日付(開始日:セルF2)、この開始日から31日分・日付と平日・土日の色分けを行います。31日分表示する様に作成しております。今回は、2021年10月16~11月15日まで表示します。

 

【プログラム説明】
①セル「F2」に開始日を指定します。(※いつでも良い)
②開始日を元に、31日分A列に日付を表示します。
③表示した日付に対して、日曜日は赤土曜日は、青・平日は黒で日付を表示します。

 

 

 

 

  ●実行前~実行後  ※セル「F2」の指定した開始日からA列に日付を表示して、表示して曜日ごとに、土日・平日と日付に色分けを行いました。(日曜日:赤・土曜日:青・平日:黒)
(画面クリックして拡大)

 

 

 

指定した日付から一か月分の土日・祝日・平日の判定を行い色分け表示します。(曜日の取得は、WeekdayNameを利用・別シートで管理・祝日判定)

 

 

 ●プログラム説明 (サンプル④) WeekDay関数・WeekDayName関数

下記のサンプルプログラムは、指定した日付(セル:B1)、この指定日から31日分・日付と曜日には、平日・土日・祝日の色分けを行います。31日分表示する様に作成しております。今回は、2021年5月1~5月31日まで表示します。また、祝日についても、ワークシートの「祝日」を参照しながら祝日の場合は、日付・曜日を【赤】色に表示します。

 

【プログラム説明】
①セル「B1」に指定日を設定します。(※いつでも良い)
②指定日を元に、31日分表示します。*日付は3行目:曜日は4行目に表示します。
③表示した日付に対して、日曜日と祝日は赤土曜日は、青・平日は黒で日付を表示します。
祝日判定は、ワークシート「祝日」から登録されている日付と一致した場合は、祝日と判定されます。また、このワークシートに会社の創立記念日や会社独自の休日を指定しても祝日と判定されます。


※祝日の判定は、ワークシート「祝日」のA列を元に判定いたします。祝日以外にも会社の創立記念日や独自の休日を祝日として日付として入力する事で判定する事が出来ます。

【プログラム実行条件】
・ワークシート「勤務表」・・3列目に日付・4列目に曜日が表示されます。
・ワークシート「祝日」・・A列に日付・B列に祝日名を入力します。
・セルB1に指定日付を入力します。

 

 

 

 ●実行前~実行後 ※プログラム実行後、シート「勤務表」セル「B1」に入力された日付より、3列目に日付・4列目に曜日が表示されました。祝日判定もされているので、祝日も赤文字で表示されました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。