• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel、複数条件を満たしたグループ数カウント)

Excel、複数条件を満たしたグループ数カウント方法

このQ&Aのポイント
  • Excelを使用して複数条件を満たしたグループの数をカウントする方法を知りたいです。
  • データには果物、輸送、ユーザの情報があり、果物がりんご、輸送が車の条件を満たすユーザグループ数を抽出したいです。
  • ピポットテーブルやSUMPRODUCTを試しましたが、方法が分からず困っています。データは1万件あります。

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

  • ベストアンサー
  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.1

D2セルに以下の式を入れて、下にドラッグコピーしてピボットテーブルを作ってみてください。 =A2&B2

okonomi99
質問者

お礼

aokiiさん 何をそんな単純なことじゃ無いんですよぉ~ と、半信半疑でExcel詳しいものに一言はなしたら、「目からウロコです!!」と、 ちょちょいとできてしまいました。 付け加えるなら、E2セルに =1/COUNTIF(D:D,D2) ト入れて、下まで入れてピポット計算しなくては、希望の表にはなりませんでした。 いずれにせよ、解決のための糸口をありがとうございました。 他の方々も色々とアドバイスありがとうございました。 私にはSQLなどは難し過ぎでしたが。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 SUMPRODUCT関数を使った方法です。  今仮に、A1セルに「果物」、B1セルに「輸送」、C1セルに「ユーザ」と入力されているものとします。  又、G3セルに「りんご」、H3セルに「車」と入力されていて、I3セルに〔果物〕りんご 〔輸送〕車 の条件を満たした〔ユーザ〕のグループ数を表示させるものとします。  その場合、I3セルには次の関数を入力されると良いと思います。 =IF(OR($L3="",$M3=""),"",IF(COUNTIFS($A:$A,$L3,$B:$B,$M3,$C:$C,"*?"),SUMPRODUCT(($A$1:INDEX($A:$A,MATCH(CHAR(1),$C:$C,-1))=$L3)*($B$1:INDEX($B:$B,MATCH(CHAR(1),$C:$C,-1))=$M3)*($C$1:INDEX($C:$C,MATCH(CHAR(1),$C:$C,-1))<>"")*(COUNTIFS(OFFSET($A$1,,,ROW($C$1:INDEX($C:$C,MATCH(CHAR(1),$C:$C,-1)))-ROW($C$1)+1),$L3,OFFSET($B$1,,,ROW($C$1:INDEX($C:$C,MATCH(CHAR(1),$C:$C,-1)))-ROW($C$1)+1),$M3,OFFSET($C$1,,,ROW($C$1:INDEX($C:$C,MATCH(CHAR(1),$C:$C,-1)))-ROW($C$1)+1),$C$1:INDEX($C:$C,MATCH(CHAR(1),$C:$C,-1)))=1)),""))

すると、全ての回答が全文表示されます。
回答No.5

パターン数が膨大でなければ、ピポットテーブルで、階層を組んで複数要素を指定するだけでは?

すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 今仮に、A1セルに「果物」、B1セルに「輸送」、C1セルに「ユーザ」と入力されているものとします。  又、G3セルに「りんご」、H3セルに「車」と入力されていて、E列を作業列として使用して、I3セルに〔果物〕りんご 〔輸送〕車 の条件を満たした〔ユーザ〕のグループ数を表示させるものとします。  まず、E2セルに次の関数を入力して下さい。 =IF(OR(INDEX($A:$A,ROW())="",INDEX($B:$B,ROW())="",INDEX($C:$C,ROW())=""),"",IF(COUNTIFS($A$1:INDEX($A:$A,ROW()),INDEX($A:$A,ROW()),$B$1:INDEX($B:$B,ROW()),INDEX($B:$B,ROW()),$C$1:INDEX($C:$C,ROW()),INDEX($C:$C,ROW()))=1,INDEX($A:$A,ROW())&"◆"&INDEX($B:$B,ROW()),""))  次に、E2セルをコピーして、E3以下に貼り付けて下さい。  次に、I3セルに次の関数を入力して下さい。 =IF(OR(INDEX($G:$G,ROW())="",INDEX($H:$H,ROW())=""),"",COUNTIF($E:$E,INDEX($G:$G,ROW())&"◆"&INDEX($H:$H,ROW())))  以上です。

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

例示のデータがA1セル以下にあり(1行目が項目名)、検索条件の果物がE1セル、輸送がF1セルに入力されているなら以下の式で、対応するユーザーの数(種類)を計算することができます。 =COUNT(INDEX(1/(MATCH(E1&F1&$C$2:$C$10000,$A$2:$A$10000&$B$2:$B$10000&$C$2:$C$10000,0)=ROW($2:$10000)-1),)) ただし、上記の数式は配列数式なので、この数式を多数のセルにコピー入力すると再計算に時間がかかりシートの動きが重くなるので、補助列を使用した集計やピボットテーブルの利用など、他の対処法を検討するほうが良いと思います。

すると、全ての回答が全文表示されます。
回答No.2

データ量は多いため、数式は遅いと思います。 以下のSQLを実行すると、添付画像の結果が出ました。 SELECT "果物" ,"輸送" ,COUNT("ユーザ") AS "ユーザ" FROM T1 GROUP BY "果物" ,"輸送"

すると、全ての回答が全文表示されます。

関連するQ&A