• ベストアンサー

日と時刻のカウント

Excel2000です。 B2から下に「日付」の意味で 8月31日 8月30日 8月29日  ・  ・ C2から下に「何時台」の意味で 1 2 3 ・ ・ D2から下に「日付と時刻」で 2004/8/24 17:23 2004/8/23 20:00 2004/8/18 17:11   ・   ・ と入力されている時に E2には、D列に8月31日が何個あるか、 F2には、1時台が何個あるかを表示するには どういう数式を立てたらいいでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#1です。補足していただいて、ありがとうございました。 答えを出すために使うデータが上部にあり、データそのものが下部分にあるのですね。わかりました。 元データが日付+時刻になっている点が、問題として目新しい(複雑になっている)です。 (1)日付の取りだし方     =INT(A1)かまたは =DATE(YEAR(A1),MONTH(A1),DAY(A1)) (2)時刻の取り出し方     =A1-INT(A1)または    =TIME(HOUR(A1),MINUTE(A1),SECOND(A1)) それぞれ、日付、時刻の書式にその列を設定して見ること。    時刻は、本問題では時間帯を考えているので    =HOUR(A1)でよい。 (例データ)A1:C9 2004/8/24 1:30 2004/8/24   1 2004/8/25 2:30 2004/8/25   2 2004/8/24 15:30 2004/8/24   15 2004/8/27 6:30 2004/8/27   6 2004/8/24 1:35 2004/8/24   1 2004/8/25 15:30 2004/8/25   15 2004/8/26 1:50 2004/8/26   1 2004/8/25 15:10 2004/8/25   15 2004/8/27 6:30 2004/8/27   6 B列はB1に=INT(A1)を入れてB9まで複写したもの。 C列はC1に=HOUR(A1)をいれてC9までふくしゃしたもの。 A10:A13に A列      B列 2004/8/24      3 2004/8/25      3 2004/8/26  1 2004/8/27      2 があるとして B10に=COUNTIF($B$1:$B$9,A10)と入れてB13まで複写する。 (結果) 上記B列の通り。 A14:A17に 1 3 2 1 6 2 15 3 あるとして B14に=COUNTIF($C$1:$C$9,A14)といれB17まで複写したもの。 (結果)B列のとおり。 ワーク列として、B、C列を使っていますが、配列数式を 使うと凌げる場合がある。 例えば本問題では (日付) B10に =SUM(IF(INT($A$1:$A$9)=A10,1,0))と入れて、SHIFT+CTRL+ENTERで3が出ます。 B11からB13は式複写でよい。 (時刻) B14に=SUM(IF(HOUR($A$1:$A$9)=A14,1,0))を入れ SHIFT+CTRL+ENTERで3が出ます。 B15からB17は式複写でよい。    

noname#9284
質問者

お礼

何度もすみません。 ええと、データの入力は質問に書かせていただいたとおりなんです。 B列に日付、C列に○時台、 D列に日付と時刻 という具合なんです。 ご回答を元に E2には {=IF(B2="","",SUM(IF(INT($D$2:$D$100)=B2,1,0)))} または =IF(B2="","",SUMPRODUCT((INT($D$2:$D$100)=B2)*1)) F2には {=SUM(IF(HOUR($D$2:$D$100)=C2,1,0))} または =SUMPRODUCT((HOUR($D$2:$D$100)=C2)*1) として必要な分下までコピーしました。 お礼申し上げます。 8月29日17:22

その他の回答 (2)

noname#240783
noname#240783
回答No.2

データが列2から列11までとして、配列数式を使って セルE2には =SUM((MONTH(D2:D11)=8)*(DAY(D2:D11)=31)) と入力してから、CtrlキーとShiftキーを同時に押したままEnter。 セルF2には =SUM(IF(HOUR(D2:D11)=1,1)) と入力してから、CtrlキーとShiftキーを同時に押したままEnter。 セルF2の方は対象がC列なのかもしれませんが、ちょっと不明でしたので F列を対象にしました。 こーゆーことでしょうか??

noname#9284
質問者

お礼

ご回答をありがとうございます。 ご回答をもとに {=IF(B2="","",SUM((MONTH($D$2:$D$100)=MONTH(B2))*(DAY($D$2:$D$100)=DAY(B2))))} または =IF(B2="","",SUMPRODUCT((MONTH(B2)=MONTH($D$2:$D$100))*(DAY(B2)=DAY($D$2:$D$100)))) {=SUM(IF(HOUR($D$2:$D$100)=C2,1))} または =SUMPRODUCT((C2=HOUR($D$2:$D$100))*1) としました。 お礼申し上げます。 8月28日23:13

noname#9284
質問者

補足

> セルF2の方は対象がC列なのかもしれませんが、ちょっと不明でしたので > F列を対象にしました。 D列の中に、C列に入力した「○時台」がいくつあるかをカウントさせたいと思いました。 8月28日23:17

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

2点良く判らない。 (1)B列+C列とD列の関係はあるのでしょうか。 B列とC列は組みになったものですよね。 (2)>D列に8月31日が何個あるか 8月31日のように指定した日を単発で個数を数えるのか、 8月31日はセルに入るのか。 また8月30日は、8月29日は・・・と、沢山の日にちについて勘定するのか。

noname#9284
質問者

補足

(1)B列+C列とD列の関係はあるのでしょうか。 ありません。組にもなっていません。書いたとおり入力されているだけです。 (2)>D列に8月31日が何個あるか B列の日付を見て、D列からカウントし、B列の日付と同じ行に個数を返したいと思います。 よって > また8月30日は、8月29日は・・・と、沢山の日にちについて勘定するのか。 となります。 8月28日22:57

関連するQ&A