• ベストアンサー

エクセルで特定の日の曜日の出現頻度を調査する方法

 西暦2001年から2400年の間(日数は7の倍数)の毎月13日(4800回)は何曜日が多いのかエクセル2000で調べることができるでしょうか。条件はすべて現行暦法に従うものとします。

質問者が選んだベストアンサー

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.6

こんばんは A1に 2001 A2に 2400    A  B  C 1 2001  日  式 2 2400  月  ↓ 3     火  ↓ 4     水  ↓ 5     木  ↓ 6     金  ↓ 7     土  ↓ セルC1に式  =SUMPRODUCT((TEXT(DATE($A$1,ROW(INDIRECT("$A1:A"&($A$2-$A$1+1)*12)),13),"aaa")=B1)*1) C7まで複写

SuchASmallWorld
質問者

お礼

たいへんに汎用性の高いワークシートの使い方で感動しました。関数だけでもこれだけのことができるんですね。ヘルプで関数の使い方をみたのですが理解できませんでした。これからもっと勉強します。とてもエレガントな解法を惜しげもなくご教授頂き感謝します。  回答をお寄せくださったみなさまへ。 点数はお一人お一人に20ポイントずつ差し上げたいところなのですがルール上できません。心苦しいので質問するのではなかったと思うほどです。どうかご理解ください。また困ったときには手をさしのべてやってください。改めてみなさんにお礼を申し上げます。ありがとうございました。

その他の回答 (5)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.5

No.4のarukamunです。 誤字がありましたので訂正です。 >B1セルからM1セルまでを月として、1から12間でを入力。 B1セルからM1セルまでを月として、1から12までを入力。 >すると、セルが計算され、1から7までの数値が出ます。 すると、セルが計算され、日から土までの曜日が出ます。 申し訳ありません。

SuchASmallWorld
質問者

お礼

いえいえ訂正頂くなくとも十分内容は伝わっておりました。お心遣い感謝です。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.4

B1セルからM1セルまでを月として、1から12間でを入力。 (入力と書きましたが、B1セルに1を入れて、B1セルの右下にある■をCtrlを押しながら右へドラッグ) A2セルからA401までを年として、2001から2400を入力。 (上と同様に、A2セルに2001を入れて、セルの右下の■をCtrlキーを押しながら下へドラッグ) B2セルに =TEXT(WEEKDAY(DATE($A2,B$1,13)),"aaa") を入力する。 このセルをコピーして、B2セルからM401までにペースト。 すると、セルが計算され、1から7までの数値が出ます。 では、表が出来たので、数を数えて見ましょう。 O1セルに 日 と入れ、セル右下の■を下へO7セルまでドラッグします。日、月、火、・・・、土となりましたね。 次に、P1セルに、 =COUNTIF($B$2:$M$401,$O1) と入力し、P1セルをコピーして、P2セルからP7セルまでペーストします。 結果は13日の金曜日が一番多くて688回です。

SuchASmallWorld
質問者

お礼

初心者の私でもわかるように書いて頂きありがとうございます。ご回答のように実行しましたら簡単にできました。

  • tbobi
  • ベストアンサー率45% (544/1189)
回答No.3

A1に 2001/1/13  B1に =TEXT(A1,"aaa") A2に =DATE(YEAR(A1),MONTH(A1)+1,DAY(A1)) B2に =TEXT(A2,"aaa") を入れてA2とB2を以下の行へ2400年ぶんまでコピー。 あとはCOUNTIF関数で =COUNTIF(B:B,"月") =COUNTIF(B:B,"火") こんなふうに数えるのはどうでしょう? ※エクセル2002ではできました。 ※曜日が正しいかは保証できません。

SuchASmallWorld
質問者

お礼

 こういう方法もあるのですね。時間のある時にじっくりと勉強させて頂きますが、まずはお礼まで。ありがとうございました。

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.2

出来そうですね。 A列に年度 B列に月 C列には日(13のみ)を入力するとして D列に=WEEKDAY(DATE(A1,B1,C1))という式を入力。 あとは全部を4800行下にオートフィルして D列の1~7の値をcount関数で数えることが出来ます。 1~7までのカウント数でどれが一番多いかまでをひとつの式に入れるのは・・・ちょっと考え付きませんでしたので賢者にお任せ。

SuchASmallWorld
質問者

お礼

エクセルの得意とする力業ですね。参考になりました。ありがとうございました。

  • proust
  • ベストアンサー率57% (62/108)
回答No.1

数学に詳しければもっといい方法があるでしょうが 私なら次のように解きます。 1)セルA1:"2000", B1:"1", C1:"=DATE(A1,B1,13)と入力 2)以降、B列を月名とし、12月まで入力 3)A13:"=A1+1", B13:"=if(B12=12,1,B12+1)", C13:"=DATE(A13,B13,13)"と入力 4)A13...C13の範囲をコピー 5)編集(E)->ジャンプ(G)を使い、セルA4800にジャンプ 6)Ctrlキーを押しながら上矢印キーを押し, セルA13..A4800の範囲が反転するようにする 7)Shiftキーを押しながら下矢印キーを1回押し、  セルA12..A4800の範囲が反転するようにする 8)Ctrlキーを押しながらVキーを押し、数式を貼り付ける 以上で曜日のリストができます。次にメニューの データ(D)->ピボットテーブル(P)でピボットテーブルを つくり、曜日の個数が出るようにすればできます。 ちなみに 月,火=685日 水,日=687日 木,土=684日 金=688 日間でした。

SuchASmallWorld
質問者

お礼

 質問してから22分後の回答でわかるなんてびっくりです。ありがとうございました!

関連するQ&A

専門家に質問してみよう