• ベストアンサー

Excelで一定期間の数を数えたい

 多分、他の方も質問されていると思いますが、見付けられなかったので、教えてください。  例えば、 2006/4/1 A 2006/4/5 B 2006/4/7 C 2006/4/15 A 2007/5/12 B 2007/5/13 A  こんな感じで表がある場合、 2006/4のAがいくつでBがいくつ、2007/5のAがいくつでBがいくつって数えるのはどうしたらよいのでしょうか?  ちなみに、期間(行)は、3年くらいで1000以上の日があります(重複有り)また、A,Bと書いたところは、品名でこれも100種類くらい(重複有り)あります。 もちろん、日付と品名は独立したセルです。 月別にA,B,Cはそれぞれいくつと集計したいのですが。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

A列が日付、B列が品名のとき関数式でやるなら =SUMPRODUCT((YEAR($A$1:$A$1000)=2006)*(MONTH($A$1:$A$1000)=4)*($B$1:$B$1000="A")*1) で「2006年」の「4月」の「A」の行数がカウントできます C列に補助列を作成し =TEXT(A1,"YYYYMM") と入力しておくと 200604 という文字列が作成できますので =SUMPRODUCT(($C$1:$C$1000="200604")*($B$1:$B$1000="A")*1) のように短くできます

dogs59
質問者

お礼

ゆっくりと考えて試してみます。 ありがとうございました。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

ANo.1 で ASIMOVさんが仰っているようにピボテに依るのが簡単かと。 そこで仰っている「月日を行(R)に」がどういうことなのか私には理解できなかったのですが、私が得た結果を示しておきます。 日付フィールドを行エリアに、品名フィールドを列エリアとデータエリアに放り込んだ後、行エリアを月と年でグループ化すると次のようになりました。     A    B  C      D     E   F   G   H   I 1  日付    品名   データの個数/品名    品名 2  2006/4/1 A    年         日付 A   B   C   総計 3  2006/4/5 B    2006年       4月   2   1   1   4 4  2006/4/7 C              5月      1      1 5  2006/4/15 A    2007年       4月   1         1 6  2006/5/23 B              5月   1   2      3 7  2007/4/8 A    総計            4   4   1   9 8  2007/5/10 B 9  2007/5/12 B 10 2007/5/13 A 11

dogs59
質問者

お礼

考え方が難しいですが、何とか試してみます。 ありがとうございました。

  • Caryo_t
  • ベストアンサー率45% (112/246)
回答No.4

ピボットテーブルを使わず,表形式にする方法を紹介します。 まず,日付をAの列に,品名をBの列に入れているものとします。  (dogs59さんが例に出した2006/4/1 A で言えば,2006/4/1がA1に,AがB1のセルにあるとします) このデータが入っているシートの名前を,仮に「DATA」とします。 つぎに,集計用のシートを追加して,仮に「Total」とします。 TOTALのシートの構成は,以下のようにします。  ・A1に「年度」と入れ,A2のセルから縦に年を入れる。  ・B1に「月」と入れ,B2のセルから縦に月を入れる。  ・最後に,商品名をC1から横に並べる。 イメージとしては,こんな感じになります(セルの区切りは「,」で表しています。 年度,月,商品A,商品B,商品C,… 2006,12,【数式】 2007,1 2007,2 2007,3 ここまで来れば,あと一息。 TOTALのシートのC2のセル(上の例にある【数式】のところ)に,以下の式を貼り付けて, ShiftとCtrlを押しながら,Enterを押します。 =SUM(IF(YEAR(DATA!$A$1:$A$2000)=$A2,IF(MONTH(DATA!$A$1:$A$2000)=$B2,IF(DATA!$B$1:$B$2000=C$1,1,0),0),0)) あとは,これをオートフィルで引っ張るだけです。 数式の意味は蛇足になってしまいそうなので,お知りたい場合には,またお知らせ下さい。

dogs59
質問者

お礼

ありがとうございました。 ゆっくりと考えて試してみます。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

=SUMPRODUCT((TEXT(A1:A1000,"yymm")="0604")*(B1:B1000="A")) これで2006/04のAが、 =SUMPRODUCT((TEXT(A1:A1000,"yymm")="0705")*(B1:B1000="B")) これで2007/05のBがカウントできます。

dogs59
質問者

お礼

ありがとうございます。 ゆっくりと式の意味を展開して考えてみます。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

ピボットテーブルでどうでしょうか データーの上の行のセルに「日付」「品名」と項目を入れた後、項目を含めデーター全体を選択した後、データ、ピボットテーブルとし レイアウトで、月日を行(R)に、品名を列(C)とデータ(D)の両方にドラグ&ドロップします

dogs59
質問者

お礼

ピボットテーブルという手がありましたね。 ありがとうございます。

関連するQ&A