#3です。処理回数・計算を減らすため
Function wn1(a, b, c)
k = 0
W = Weekday(a)
' MsgBox W
If W > c Then
a = a + 7 - (W - c)
Else
a = a + c - W
End If
For i = a To b Step 7
k = k + 1
MsgBox i
Next i
wn1 = k
End Function
に改良します。
名前を wn1 と改めたので、式は =wn1(a2,A3,3)
---
上記を関数化すると
火曜日は3なので、下記に3が現れている。木曜なら5です。
=IF(WEEKDAY(A2)>3,INT((A3-(A2+7+3-WEEKDAY(A2)-1))/7),INT((A3-(A2-WEEKDAY(A2)+3-1))/7))
1年きっちり1/1-12/31とかでない場合は
ユーザー関数で、FROM日付からTO日付までWeekday関数で火曜日3(デフォルトの場合)の日にちを勘定すればよい。
標準モジュールに
Function wn(a, b, c)
k = 0
For i = a To b
If Weekday(i) = c Then
k = k + 1
' MsgBox i
End If
Next i
wn = k
End Function
ワークシートには
A2 2007/8/5
A3 2007/8/28
の場合
=wn(A2,A3,3)を入れる。
結果
4
お礼
回答ありがとうございます。 助かりました。