こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

投稿日時 - 2010-04-05 14:45:45

QNo.5804245

暇なときに回答ください

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.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) 上記の式で 調べたい曜日の数がカウントできると思います。


{ } 付きにする意味とかは『配列数式』でググってください。

回答するのは初めてなので、重複回答・見にくい点等あったらご容赦ください。

ご参考になれば幸いです。

投稿日時 - 2010-04-09 11:31:02

お礼

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

投稿日時 - 2010-04-11 13:15:55

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

投稿日時 - 2010-04-08 08:02:04

お礼

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

投稿日時 - 2010-04-11 13:18:28

ANo.5

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

=INT((DAY(EOMONTH(A1,0))+WEEKDAY(A1-B1)-1)/7)

投稿日時 - 2010-04-05 18:34:36

お礼

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

投稿日時 - 2010-04-11 13:20:50

ANo.4

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

投稿日時 - 2010-04-05 17:32:36

ANo.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)...] - [分析ツール] に チェック を入れてください。

投稿日時 - 2010-04-05 16:50:11

ANo.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)

投稿日時 - 2010-04-05 16:35:07

お礼

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

投稿日時 - 2010-04-11 13:21:42

ANo.1

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

曜日を計算する関数はWEEKDAYです。

投稿日時 - 2010-04-05 14:51:38

お礼

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

投稿日時 - 2010-04-11 13:22:16

あなたにオススメの質問