スナックelve 本店

バツイチ40代女の日記です

年と月を指定して各週の月曜日と金曜日を求める

http://tatehide-blog.net/archives/excelvba_getdateweeknum.htmltatehide-blog.net
書いてから見つけた。こっちのほうが断然楽だと思います(´;ω;`)ウゥゥ

毎月、週ごとの集計処理があるため、月曜日、金曜日を把握したくなりました。
ただし、1日は金曜日なら金曜日だけが第1週、土日なら次の月曜日が第1週のスタート。
月末は土日なら無視。他は最終日までが最終週

6月
f:id:elve:20190906003059p:plain

9月
f:id:elve:20190906003138p:plain

10月
f:id:elve:20190906003222p:plain


複雑な計算してるのは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))))

全体

f:id:elve:20190906004036p:plain