http://tatehide-blog.net/archives/excelvba_getdateweeknum.htmltatehide-blog.net
書いてから見つけた。こっちのほうが断然楽だと思います(´;ω;`)ウゥゥ
毎月、週ごとの集計処理があるため、月曜日、金曜日を把握したくなりました。
ただし、1日は金曜日なら金曜日だけが第1週、土日なら次の月曜日が第1週のスタート。
月末は土日なら無視。他は最終日までが最終週
6月
9月
10月
複雑な計算してるのは1週目と5週目で、それ以外は前の週の金曜日に3日足したら月曜日、前の週の金曜日に7日足して金曜日にしてます。
祝日は無視です。
以下、B2に年、D2に月が入ってるとします。
1週目の月曜日
WEEKDAY(DATE($B$2,$D$2,1),2)で1日が月曜なら1、火曜なら2・・・日曜なら7が帰ってきます。
5以下なら平日なんで、最初は1日でいい。
1日が6(土曜日)なら月曜日は3日
1日が7(日曜日)なら月曜日は2日→土日は9から曜日を引きます。
=IF(WEEKDAY(DATE($B$2,$D$2,1),2)<=5,1,(9-WEEKDAY(DATE($B$2,$D$2,1),2)))
1週目の金曜日
5以下なら平日なんで、6から曜日ひいて、土日なら1週目の月曜日に4(火水木金)加える。
=IF(WEEKDAY(DATE($B$2,$D$2,1),2)<=5,6-WEEKDAY(DATE($B$2,$D$2,1),2),C5+4)
5週目の月曜日
4週目の金曜日に3日足した日付が最終日(DAY(DATE($B$2,$D$2+1,0)))よりも小さければそのまま、超えたら"-"表示。
=IF((D8+3)<DAY(DATE($B$2,$D$2+1,0)),(D8+3),"-")
5週目の金曜日
第5月曜日が"-"なら"-"、前週の金曜日に7足したものが最終日以下ならその日。超えてたら最終日
=IF(C9="-","-",IF((D8+7)<=DAY(DATE($B$2,$D$2+1,0)),D8+7,DAY(DATE($B$2,$D$2+1,0))))