dポイントプレゼントキャンペーン実施中!

エクセルの計算式おしえてください。
ある期間に特定の曜日が何日あるか求めるには?
2007年1月1日から12月31日までに日曜日と火曜日は何日あるか求める計算式を教えてください。

A 回答 (5件)

#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))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
助かりました。

お礼日時:2007/08/22 13:51

素朴にこんな式でも。



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で動作確認済
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
助かりました。

お礼日時:2007/08/22 13:51

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)を入れる。
結果
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
助かりました。

お礼日時:2007/08/22 13:52

#01です。

先ほどの回答では少しつまらないですね。汎用的な式にしました

A1に開始日(2007/1/1)、B1に終了日(2007/12/31)、C1に数えたい曜日(日,月,火,水,木,金,土のいずれか)を入力して、適当なセルに以下の式を貼り付けてください。この式なら任意の期間の曜日をカウントします

=SUMPRODUCT((WEEKDAY(A1+ROW(INDIRECT("A1:A"&(B1-A1+1)))-1)=FIND(C1,"日月火水木金土"))*1)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
助かりました。

お礼日時:2007/08/22 13:50

計算式ですか? まず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回出現します。計算するほどのことではありません。
質問の意図が違う場合は補足してください
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
例を一年間にしたのですが、実際は特定されていない期間です。質問がわかりにくくすみません。

お礼日時:2007/08/22 13:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!