• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ピボットテーブルの値について質問です。)

ピボットテーブルでデータの種類の数を抽出する方法について教えてください

このQ&Aのポイント
  • ピボットテーブルを使用して、データの種類の数を抽出する方法について教えてください。現在は条件に合う関数を使用して個別に計算しているため、手間がかかっています。また、登録番号や割付項目が多いデータで抽出条件が変わるため、効率的な方法があれば教えていただきたいです。
  • 登録番号や割付項目が多いデータで、抽出条件も都度変わるため、ピボットテーブルを使用してデータの種類の数を抽出する方法を知りたいです。現在は関数を使用して個別に計算していますが、手間がかかるため、より効率的な方法があると嬉しいです。
  • ピボットテーブルを使用して、登録番号や割付項目が多いデータでデータの種類の数を抽出する方法を教えてください。現在は関数を使って個別に計算しているため、手間がかかっています。抽出条件も都度変わるため、ピボットテーブルを利用する方法があると助かります。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

まずとりあえず、ご承知の通りエクセルのピボットテーブルレポートには、「種類の数」を数える方法はありません。 ご利用のエクセルのバージョンがご相談に書かれていませんが、添付図はエクセル2010(以降)を使い、 レポートフィルタ(ページフィールド)に  状況を配置、 AとBを選択  割付2を配置、有を選択 行ラベルに  割付を配置  登録番号を配置 しておき、さらに割付フィールドのフィールドの設定で「アイテムのラベルを繰り返す」ことで、別途並べたCとHをCOUNTIF関数で数えています。 I13: =COUNTIF(G:G,H13) 関数を使って一発集計とか、補助列を用意してピボットテーブルに集計させることももちろんやれば出来ますが、抽出条件が変わる都度数式をまたイチから作り直さなきゃならないんで、現実問題としては役に立ちません。 一応ご参考に、添付図では E2: =IFERROR(1/SUMPRODUCT(COUNTIFS(A:A,A2,B:B,{"A","B"},D:D,"有")),0) 補助列をピボットテーブルレポートで「合計」で集計すると、それぞれの種類の数が集計される。

delucagolf
質問者

お礼

ありがとうございました。 >抽出条件が変わる都度数式をまたイチから作り直さなきゃならないんで、現実問題としては役に立ちません。 まさに関数だとその通りなのです。今回は抽出条件が都度変わるので困っておりました。 なのでピボットテーブルで処理できるのはとてもありがたいです! 「アイテムのラベルを繰り返す」というのがExcel2010ではあるんですね! 知りませんでした。これは便利そうです。 あと、補助列に入れる関数もとても参考になりました! 私はまだExcel2007ですが、この資料を持っている友人はExcel2010を使用しておりますので、 早速後日試してみたいと思います。 今後Excelのピボットテーブルで「種類の数をカウント」というのもできたらいいな・・と期待します。

その他の回答 (2)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>やはり関数を入力した作業列(E列)を抽出条件ごとに作成する必要がありそうですね。 絶対ではありませんが演算式が複雑になってデバックが難しくなります。 割り付けがHのとき =SUM(IF((B$2:B$8="A")*(C$2:C$8="H")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7)/SUM(IF((B$2:B$8="A")*(C$2:C$8="H")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7),"")),""))+SUM(IF((B$2:B$8="B")*(C$2:C$8="H")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7)/SUM(IF((B$2:B$8="B")*(C$2:C$8="H")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7),"")),"")) 割り付けがCのとき =SUM(IF((B$2:B$8="A")*(C$2:C$8="C")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7)/SUM(IF((B$2:B$8="A")*(C$2:C$8="C")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7),"")),""))+SUM(IF((B$2:B$8="B")*(C$2:C$8="C")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7)/SUM(IF((B$2:B$8="B")*(C$2:C$8="C")*(D$2:D$8="有"),ROW(A$1:A$7)/ROW(A$1:A$7),"")),"")) 当方では試算しましたが実際のデータで確認してみると良いでしょう。

delucagolf
質問者

お礼

ありがとうございました。 色々な関数が参考になりました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

>(抽出条件) >状況=AorB 及び 割付2=有 の登録番号を 割付毎に抽出する >(答) >H = 3 >C = 1 この結果を求めるには次の式で良いでしょう。 試算は提示のデータ数の範囲で実行しました。 Hの個数 =COUNT(IF((OR(B$2:B$8="A",B$2:B$8="B"))*(C$2:C$8="H")*(D$2:D$8="有"),ROW($A$2:$A$8),"")) Cの個数 =COUNT(IF((OR(B$2:B$8="A",B$2:B$8="B"))*(C$2:C$8="C")*(D$2:D$8="有"),ROW($A$2:$A$8),"")) この式はIF関数の返り値を配列としなければならないので入力後、Ctrl+Shift+Enterで確定します。 >(希望の答=データの種類数) >H = 2 >C = 1 この結果を求めるにはデータの重複をチェックする必要がありますのでE列に次の式をセットします。 E2=COUNTIFS(B$2:B2,B2,C$2:C2,C2,D$2:D2,D2) E2セルを下へ必要数コピーします。 Hの個数 =COUNT(IF((OR(B$2:B$8="A",B$2:B$8="B"))*(C$2:C$8="H")*(D$2:D$8="有")*(E$2:E$8=1),ROW($A$2:$A$8),"")) Cの個数 =COUNT(IF((OR(B$2:B$8="A",B$2:B$8="B"))*(C$2:C$8="C")*(D$2:D$8="有")*(E$2:E$8=1),ROW($A$2:$A$8),"")) Excel 2013を使用しましたがExcel 2007以降のバージョンで処理可能です。 Excel 2003以前のバージョンではCOUNTIFS関数がありませんので代替の関数式で対応させます。

delucagolf
質問者

お礼

やはり関数を入力した作業列(E列)を抽出条件ごとに作成する必要がありそうですね。 バージョンは2007を使用しております。 ありがとうございました。

関連するQ&A