例えば「月曜日の数」を求めようと思ったら 開始日は火曜日の時が 一番計算が楽です。「開始日から5日(6日間)は月曜日がない」ことがはっきりするからです。つまり6日後(期間にして7日)にようやく月曜日がきます。ということは単純に期間を7で割って端数を切るだけで答えが出ます。
6日後(7日間)に初めて1週間と計算するように計算してやれば 何曜日でも同じように計算できるようになります。指定曜日が火曜日だとするなら「開始日の前の週の水曜日」を求めればいいのです。ただWEEKDAY関数の第二引数を「3」にした場合
月曜日が始点となりますので 指定曜日とのずれを別途調整してやる必要はあります。
指定曜日が日曜日の場合 → 調整値は「0」
指定曜日が月曜日の場合 → 調整値は「1」
指定曜日が火曜日の場合 → 調整値は「2」
指定曜日が水曜日の場合 → 調整値は「3」
指定曜日が木曜日の場合 → 調整値は「4」
指定曜日が金曜日の場合 → 調整値は「5」
指定曜日が土曜日の場合 → 調整値は「6」
要は
何日前が日曜日かを考えればいいです。
最後に順を追って計算していきましょう。
■開始日から終了日までの期間
=終了日-開始日+1
■開始日の前の週の指定曜日翌日
=開始日-WEEKDAY(開始日-調整値,3)
合わせて 期間内の指定曜日の数を計算します。
■期間内の特定曜日の数
=INT((終了日-(開始日-WEEKDAY(開始日-調整値,3))+1)/7)
括弧が余計なので省くと
=INT((終了日-開始日+WEEKDAY(開始日-調整値,3)+1)/7)
初日を含めない場合は
=INT((終了日-開始日+WEEKDAY(開始日-調整値+1,3))/7)
因みにこの数式を応用すると「土日を除いた日数」も求められます。
土日を除いた日数
=終了日-開始日-SUM(INT((終了日-開始日+WEEKDAY(開始日+{0,1},3)+1)/7))+1