- 締切済み
エクセルで曜日の回数を求めたい(1カ月の)
エクセルで指定した曜日が一月に何回あるか なんて求めること出来るのでしょうか?
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- dai49
- ベストアンサー率0% (0/0)
エクセルのある範囲にカレンダーを作成している、又はカレンダーを作成すると仮定して (1) カレンダーの範囲が『A1:A31』だったとします。 (2) 次に調べたい曜日を設定するセルを決める。 (ここでは『C1』のセルにします。) (3) 『C1』のセルに調べたい曜日を次の条件で数字を入力します 日曜日:1 月曜日:2 火曜日:3 水曜日:4 木曜日:5 金曜日:6 土曜日:7 (4) 適当なセルに次の式 =COUNT(IF(WEEKDAY(A1:A31)=C2,1,"")) を入力し、Ctrl キーと Shift キーを押しながら Enter キーを押します。 すると式の前後に波括弧『 { } 』が付くと思います。 {=COUNT(IF(WEEKDAY(A1:A31)=C2,1,""))} ↑こんな感じです この波括弧付きの式をコピペしてもだめです。 (5) 上記の式で 調べたい曜日の数がカウントできると思います。 { } 付きにする意味とかは『配列数式』でググってください。 回答するのは初めてなので、重複回答・見にくい点等あったらご容赦ください。 ご参考になれば幸いです。
- DOUGLAS_
- ベストアンサー率74% (397/534)
#5 さんと大差ないかも知れませんが、私も トリッキー な式を考えてみました。 A1・B1 セル の内容は #5 さんと同じ条件です。 =4+(DAY(EOMONTH(A1,0))>35-WEEKDAY(A1-B1)) 1)#3 同様に考えてみます。 先ず、29日以降の日数は DAY(EOMONTH(A1,0))-28 ・・・ [式A] になります。これは #3(3) の式と等価です。 2)月初めの日付から求める曜日の インデックス(B1)を引いて A1-B1 曜日の インデックス WEEKDAY(A1-B1)) を求めるてみると、「7」から下に数えて、(1) で求めた数の分だけが、1ヶ月に「5」回ある曜日になりました。 逆に 7 - WEEKDAY(A1-B1)) ・・・ [式B] としてみると、「0」から上に数えて、(1) で求めた数の分だけが、1ヶ月に「5」回ある曜日になりました。 3)従って、 [式A] > [式B] つまり DAY(EOMONTH(A1,0))-28 > 7 - WEEKDAY(A1-B1)) の場合には、1ヶ月に「5」回ある曜日になります。 4)(3) の不等式を整理すると、 DAY(EOMONTH(A1,0)) > 35 - WEEKDAY(A1-B1)) になりますが、この値が「TRUE」の場合に、1ヶ月に「5」回ある曜日になりますので、#3 と同様に、この「TRUE/FALSE」の値を「4」に足して、 =4+(DAY(EOMONTH(A1,0))>35-WEEKDAY(A1-B1)) となりました。 なお、(2) の考え方は、ワークシートに曜日の インデックス(●:1 ~ 7)を並べておいて、 WEEKDAY(A1-●)) や 7 - WEEKDAY(A1-●)) を一覧で表示しておくことで、規則性を見出しました。 そういう意味で「トリッキー」と書きました。
お礼
大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。
- mt2008
- ベストアンサー率52% (885/1701)
A1に求めたい月の月初の日付(例:2010/4/1) B1に求めたい曜日を数字で指定(日:1、月:2、…、土:7) と、した場合↓でどうでしょう。 =INT((DAY(EOMONTH(A1,0))+WEEKDAY(A1-B1)-1)/7)
お礼
大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。
- DOUGLAS_
- ベストアンサー率74% (397/534)
#3 DOUGLAS_ です。 式に誤りがありました。 2つ目の式は、 =5-ISERR(FIND(A2,MID("日月火水木金土日月",WEEKDAY(A1),DAY(EOMONTH(A1,0))-28))) です。 大変失礼いたしました。 <(_ _)>
- DOUGLAS_
- ベストアンサー率74% (397/534)
ベタな計算式ですが。。。 =5-ISERR(FIND("日",MID("日月火水木金土日月",WEEKDAY("2010/1/1"),DAY("2010/2/1"-1)-28))) 1)例えば、今年の1月の「日曜日」の数を数えることにします。 2)1ヶ月の内、28日までの曜日はすべて4回ずつありますので、29日以降の曜日を調べることにします。 3)1月の月末日は31日 DAY("2010/2/1"-1) ですので、それから28日を引くと DAY("2010/2/1"-1)-28 余りが3になります。 つまり、1月1・2・3日と29・30・31日とは同じ曜日になります。 4)1月1日の曜日は WEEKDAY("2010/1/1") で「6」、つまり「金曜日」になります。 ということで、「金曜日」から数えて3日間の曜日は5回ずつあることになります。 5)[WEEKDAY 関数] では「種類」を省略して求めると、日曜日が「1」になりますので、 MID("日月火水木金土日月",WEEKDAY("2010/1/1"),DAY("2010/2/1"-1)-28) とすることによって『「金曜日」から数えて3日間の曜日』、つまり「金土日」を求めることができます。 月末日は32日以上になることはありません。つまり、(3)の「余り」が「4」以上になることはありませんので、「"日月火水木金土」の後は「日月"」で十分かと存じます。 6)従って、調べたい「日曜日」が「金土日」に入っているかどうかを調べ、 FIND("日",MID("日月火水木金土日月",WEEKDAY("2010/1/1"),DAY("2010/2/1"-1)-28)) 入っていれば「1・2・3」という数値が返りますので、 ISERR(FIND("日", ~~ -28))) の値は「FALSE」となり、 =5-ISERR(FIND("日", ~~ -28))) の答えが「5-0=5」となりますので、1ヶ月に5回あることになります。 入っていなければ FIND("日", ~~ -28)) の値が「#VALUE!」という「エラー値」になりますので、 ISERR(FIND("日", ~~ -28))) の値は「TRUE」となり、 =5-ISERR(FIND("日", ~~ -28))) の答えが「5-1=4」となりますので、1ヶ月に4回あることになります。 #2 さんのご回答の様に「年月」や「検索する曜日」が セル に入っている場合は =5-ISERR(FIND(A2,MID("日月火水木金土日月",WEEKDAY(A1),EOMONTH(A1,0)-28))) としてください。 ただし、A1 セル には「2010/1/1」というような日付の シリアル値、A2 セル には「日」というような曜日の漢字が入っているものとします。 [EOMONTH 関数] を利用する場合は、[ツール(T)] - [アドイン(I)...] - [分析ツール] に チェック を入れてください。
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルに2010/5/1と入力してセルの表示形式のユーザー定義で yyyy"年"mm"月" とし、セルの表示を2010年5月と表示させます。 A2セルには日曜日は1、月曜日は2、火曜日は3・・・土曜日は7のように検索したい曜日に応じて数値を入力します。 そこでA1セルで指定した月とA2セルで指定した曜日における、その月での該当日数は次の式で表すことができます。 =IF(AND(MONTH(A$1-WEEKDAY(A$1)+A$2)=MONTH(A$1),MONTH(A$1-WEEKDAY(A$1)+A$2+28)=MONTH(A$1)),5,4)
お礼
大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。
- nine999
- ベストアンサー率44% (512/1140)
できますよ。 その月の1日の曜日が判れば、日数を7で割って、割り切れない分の曜日(余りの数)だけ加算すればできますね。割り切れない曜日の最初は1日と同じ曜日ですし。 曜日を計算する関数はWEEKDAYです。
お礼
大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。
お礼
大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。