アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (7件)

できますよ。


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

曜日を計算する関数はWEEKDAYです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/11 13:22

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

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

お礼日時:2010/04/11 13:21

 ベタな計算式ですが。

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

 #3 DOUGLAS_ です。


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

A1に求めたい月の月初の日付(例:2010/4/1)


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

=INT((DAY(EOMONTH(A1,0))+WEEKDAY(A1-B1)-1)/7)
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/04/11 13:20

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

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

お礼日時:2010/04/11 13:18

エクセルのある範囲にカレンダーを作成している、又はカレンダーを作成すると仮定して



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


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

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

ご参考になれば幸いです。
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/04/11 13:15

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