• 締切済み

エクセルで曜日の回数を求めたい(1カ月の)

エクセルで指定した曜日が一月に何回あるか なんて求めること出来るのでしょうか?

みんなの回答

  • dai49
  • ベストアンサー率0% (0/0)
回答No.7

エクセルのある範囲にカレンダーを作成している、又はカレンダーを作成すると仮定して (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) 上記の式で 調べたい曜日の数がカウントできると思います。 { } 付きにする意味とかは『配列数式』でググってください。 回答するのは初めてなので、重複回答・見にくい点等あったらご容赦ください。 ご参考になれば幸いです。

yamato7878
質問者

お礼

大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.6

 #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-●)) を一覧で表示しておくことで、規則性を見出しました。  そういう意味で「トリッキー」と書きました。

yamato7878
質問者

お礼

大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

A1に求めたい月の月初の日付(例:2010/4/1) B1に求めたい曜日を数字で指定(日:1、月:2、…、土:7) と、した場合↓でどうでしょう。 =INT((DAY(EOMONTH(A1,0))+WEEKDAY(A1-B1)-1)/7)

yamato7878
質問者

お礼

大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

 #3 DOUGLAS_ です。  式に誤りがありました。 2つ目の式は、 =5-ISERR(FIND(A2,MID("日月火水木金土日月",WEEKDAY(A1),DAY(EOMONTH(A1,0))-28))) です。  大変失礼いたしました。  <(_ _)>

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

 ベタな計算式ですが。。。 =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)
回答No.2

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)

yamato7878
質問者

お礼

大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。

  • nine999
  • ベストアンサー率44% (512/1140)
回答No.1

できますよ。 その月の1日の曜日が判れば、日数を7で割って、割り切れない分の曜日(余りの数)だけ加算すればできますね。割り切れない曜日の最初は1日と同じ曜日ですし。 曜日を計算する関数はWEEKDAYです。

yamato7878
質問者

お礼

大変参考になりました、ありがとう御座います。 時間の関係で御礼が遅れましたすみませんでしたぁ。 叉何か在りましたら よろしくお願いします。