- 締切済み
特定の曜日は何日?
エクセルの計算式おしえてください。 ある期間に特定の曜日が何日あるか求めるには? 2007年1月1日から12月31日までに日曜日と火曜日は何日あるか求める計算式を教えてください。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#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))
素朴にこんな式でも。 A1:開始日(シリアル値) A2:終了日(シリアル値) A3:求める曜日の番号(日:1,月:2,火:3,水:4,木:5,金:6,土:7) =INT((A2-A1+1)/7)+(MOD(A3-WEEKDAY(A1),7)<MOD(A2-A1+1,7)) 期間の日数は A2-A1+1 です。 期間の全ての日について判定しなくても、どうせ[日数を7で割った商]+0 or +1 ですから 開始日から[日数を7で割った余り]の日数分について、 求める曜日が含まれるかどうか判定すれば済みます。 Excel2003で動作確認済
お礼
回答ありがとうございます。 助かりました。
- imogasi
- ベストアンサー率27% (4737/17069)
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
お礼
回答ありがとうございます。 助かりました。
- zap35
- ベストアンサー率44% (1383/3079)
#01です。先ほどの回答では少しつまらないですね。汎用的な式にしました A1に開始日(2007/1/1)、B1に終了日(2007/12/31)、C1に数えたい曜日(日,月,火,水,木,金,土のいずれか)を入力して、適当なセルに以下の式を貼り付けてください。この式なら任意の期間の曜日をカウントします =SUMPRODUCT((WEEKDAY(A1+ROW(INDIRECT("A1:A"&(B1-A1+1)))-1)=FIND(C1,"日月火水木金土"))*1)
お礼
回答ありがとうございます。 助かりました。
- zap35
- ベストアンサー率44% (1383/3079)
計算式ですか? まず1年は365日ですが、 365日=7日×52週+1日 です。従って1月1日の曜日だけが53回出現し、その他の曜日は52回出現します。 2007/1/1の曜日は =WEEKDAY("2007/1/1"*1) で求められますが結果は2(月曜日)です。(日月火水木金土が1,2,3,4,5,6,7になる) ですから火曜日も日曜日も52回出現します。計算するほどのことではありません。 質問の意図が違う場合は補足してください
お礼
回答ありがとうございます。 例を一年間にしたのですが、実際は特定されていない期間です。質問がわかりにくくすみません。
お礼
回答ありがとうございます。 助かりました。