- ベストアンサー
重複行を除外してカウントする関数
- Excel2003で重複行を除外してカウントする関数について教えてください。
- 会社で作成したリストから、出席したユーザーと非ユーザーの企業件数と人数をカウントする方法についてお聞きしたいです。
- Excel2003の関数が分からず困っています。重複行を除外して企業件数と人数をカウントする方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ユーザー/非ユーザーは企業に掛かるとして 1. 作業列が必要です。 E1=A1&C1 で必要分下方にコピー 全会社数=SUMPRODUCT(($A$1:$A$5="出席")/COUNTIF($E$1:$E$5,$E$1:$E$5)) ユーザー企業件数=SUMPRODUCT(($A$1:$A$5="出席")*($B$1:$B$5="ユーザー")/COUNTIF($E$1:$E$5,$E$1:$E$5)) 非ユーザー企業件数=SUMPRODUCT(($A$1:$A$5="出席")*($B$1:$B$5="非ユーザー")/COUNTIF($E$1:$E$5,$E$1:$E$5)) 2. 全人数=COUNTIF($A$1:$A$5,"出席") ユーザー人数=SUMPRODUCT(($A$1:$A$5="出席")*($B$1:$B$5="ユーザー")) 非ユーザー人数=SUMPRODUCT(($A$1:$A$5="出席")*($B$1:$B$5="非ユーザー"))
その他の回答 (4)
- layy
- ベストアンサー率23% (292/1222)
A B C D 出席 欠席 ユーザ 非 1 出席 ユーザー A社 田中氏 1 0 1 0 2 出席 ユーザー A社 佐藤氏 1 0 1 0 3 出席 非ユーザー B社 伊藤氏 1 0 0 1 4 欠席 ユーザー A社 官 氏 0 1 1 0 5 出席 ユーザー C社 水野氏 1 0 1 0 必要となる集計 「出席」「欠席」 「ユーザー」「非ユーザー」 等、E列以右に集計表のセルを用意して行けば、 難しい関数を思わなくてもなんとかなりそう。 VBAでもって 1行目から順番に2行目、3行目・・・・と値をみながら集計しても可能。 「出席」「ユーザー」とグループごとの集計であるので、 「出席」の「ユーザー」だけ別のシート2に出す、 「出席」の「非ユーザー」だけ別のシート3に出す、 こうすると その抜き出して作ったシート2、シート3全体の集計が求めたいものになる。 これでも可能。 例の6行目が増えていったとしても6行目に数式を設定しなくても済む。 元のシートは変更箇所ないので、おそらくこれが実用的で他の用途にも使える。 『シート1で、条件に見合うものをシート2に表示』 こんな事例を探す。過去質問も多数。 求めたいことについて、 どんなことしたら、どんな配置にしたら求めやすいかイメージする。 関数とか仕組みはそれから、という手段です。 やり方はいろいろありますから・・・・。 「出席予定だったが欠席」というのはあるのかどうするかはわからないが・・・。
お礼
ご回答誠にありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
No3の回答の訂正と補足です。 提示した数式は、1行目からデータが入力され、かつデータ範囲を大きめに設定した数式ですが、数式範囲に一部間違いがありました。 また、空白セルのカウント分を除外するため、提示した数式から1を引く必要があります。 =COUNT(1/(MATCH(IF(A1:A100="出席",C1:C100,""),IF(A1:A100="出席",C1:C100,""),)=ROW(A1:A100)))-1 もし、データが2行目から入力されているなら、以下のような数式になります。 =COUNT(1/(MATCH(IF(A2:A100="出席",C2:C100,""),IF(A2:A100="出席",C2:C100,""),)=ROW(A2:A100)-1)) 配列数式ですので、最後にCtrl+Shift+Enterで確定するのを忘れないでください。
お礼
ご回答誠にありがとうございました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>1.出席したユーザー、非ユーザーの企業件数(重複している企業(A社)は1件とする) 提示されたレイアウトなら、範囲を大きめに設定した以下の配列数式でカウントできます。 =COUNT(1/(MATCH(IF(A1:A100="出席",C1:C100,""),IF(A1:A10="出席",C1:C100,""),)=ROW(A1:A100))) 入力後、Ctrl+Shift+Enterで確定してください。 >2.出席したユーザー、非ユーザーの人数(重複している企業もそのままカウント) 出席者をカウントすればよいので、単純にCOUNTIF関数で良いのでは? =COUNTIF(A1:A100,"出席")
お礼
ご回答誠にありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
人数の方は「出席でユーザーである行数」で良いので =SUMPRODUCT((A1:A5="出席")*(B1:B5="ユーザー")) のように。 会社数の方はたとえば =SUM(IF((A1:A6="出席")*(B1:B6="ユーザー")*FREQUENCY(MATCH(A1:A5&B1:B5&C1:C5,A1:A5&B1:B5&C1:C5,0),MATCH(A1:A5&B1:B5&C1:C5,A1:A5&B1:B5&C1:C5,0))>0,1)) と記入し,コントロールキーとシフトキーを押しながらEnterで入力します。 式中で「A6とB6になっているところ」は間違いではなく,データのある範囲の一つ下のセルまで指定するので,間違えないよう作成してください。
お礼
ご回答誠にありがとうございました。
お礼
ご回答ありがとうございました。 早速試してみます。 これでデータ作成も間に合いそうです。