第〇 〇曜日を求める関数 、毎月の定例業務やゴミの日等で、第1火曜日等、月の中で何回目の曜日を求めたい場合があります。そんな場合に月・回数・曜日を指定して日付に変換できます。
VBEの標準モジュールに下のコードを登録して「Excelマクロ有効フォーム」で保存してください。
関数の登録方法は⇒♯000 ユーザー定義関数を登録する方法
登録されたら、シート上からユーザー関数「 ThWeek 」が使用できます。
使い方は
ワークシート上で = ThWeek(値を求める月の日付,第〇週,曜日(シリアル値又は曜日一文字)) の関数として使用することで、旧暦の月名を取得できます。
【例】
2019年6月第3火曜日
ThWeek(2019/06/1,3,2) ⇒ 2019/06/18
2019年6月第2月曜日
ThWeek(2019/06/1,2,”月”) ⇒ 2019/06/10
Function ThWeek(M As Date, Th As Long, Wday As Variant)
’ 第〇 〇曜日を求める関数
’ ThWeek(値を求める月の日付,第〇週,曜日(シリアル値
’ 又は曜日一文字))
’ ThWeek(2019/06/1,3,2)→ #2019/06/17#
’ 2019年6月第3火曜日
’ ThWeek(2019/06/1,2,”月”)→ #2019/06/10#
’ 2019年6月第2月曜日
On Error GoTo EXITFUN
Dim i As Long
Dim W
Dim D As Long
Dim WFD As Long
W = Split(“,日,月,火,水,木,金,土”, “,”)
If IsNumeric(Wday) = False Then
For i = 1 To 7
If W(i) = Wday Then
Wday = i
Exit For
End If
Next
End If
WFD = Weekday(DateSerial(Year(M), Month(M), 1))
If Wday < WFD Then
D = 1 + 7 + Wday- WFD + (Th- 1) * 7
ElseIf Wday >= WFD Then
D = 1 + Wday- WFD + (Th- 1) * 7
End If
ThWeek = DateSerial(Year(M), Month(M), D)
EXITFUN:
End Function
ここで紹介したコード使用による損害に対しては一切責任は負えません。