• ベストアンサー

ExcelでのCount関数(?)について

OKWave内を色々と検索しましたが、「これは!」と思う回答に当たらなかったため、質問させていただきます。 (似たような質問は既出です。応用力がなくてスミマセン。) Excel2003で、(できれば)Countif関数を使用して、会社名ごとの全問正解者数(下記の例だと「点数」が「6点」)の人の数を数えられないでしょうか? (「|」はセル区切りのつもりです) Sheet1 会社名|氏名|回答1|回答2|3 |4 |5 |6 |点数|備考 たらば|田中| 1 | 3 | 5 | 3 | 4 | 2 | 5 | まつば|鈴木| 2 | 3 | 5 | 3 | 4 | 2 | 6 |●○×× たらば|高橋| 2 | 2 | 1 | 3 | 4 | 2 | 3 |□◆△△△ まつば|佐藤| 2 | 3 | 5 | 3 | 4 | 2 | 6 | Sheet3 会社名|参加人数|全問正解| たらば|  2  |  1  | まつば|  2  |  1  | (ちなみに、Sheet2は、Sheet1の正誤判定に使用しています) Sheet2の正誤判定はIF文、Sheet3の参加人数はCOUNTIF文で作成してあります。 できるだけ、Sheet3の「全問正解」の行に直接関数を記入して、「たらば社の全問正解者数は1(人)」と表示させたいのですが・・・。 良い方法がありましたら、お教えくださいますようお願いいたします。

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

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

#01です >演算結果は『#NUM!』になってしまいます。 の理由は範囲指定にA:Aを使用したからです。 SUMPRODUCT関数では列単位の範囲指定はできません。 (A2は"たらば"にするのは問題なし) 複合条件は以下になります =SUMPRODUCT((Sheet1!$A2:$A5={"たらば","まつば"})*(Sheet1!$I$2:$I$5=6)*1)

michbird
質問者

お礼

おぉぉっっ!!! すごい、綺麗に設定ができました! 列単位の範囲指定はできないのですね。ご教授ありがとうございます。 本当に感謝です。どうもありがとうございました!!!

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

No3です。 次のような方法でどうでしょうか。 =SUMPRODUCT(("たらば"=Sheet1!$A$2:$A$5)*(Sheet1!$I$2:$I$5=6)+("まつば"=Sheet1!$A$2:$A$5)*(Sheet1!$I$2:$I$5=6))

michbird
質問者

お礼

図々しいお願いにも丁寧にお答えいただき、本当にありがとうございます。 (Sheet1!$I$2:$I$5=6)が2つあるのが気になってしまったので検討してみた結果、 =SUMPRODUCT((("たらば"=Sheet1!$A$2:$A$5)+("まつば"=Sheet1!$A$2:$A$5))*(Sheet1!$I$2:$I$5=6)) でうまく希望のものができました!! 本当にありがとうございました!! # ("たらば"=Sheet1!$A$2:$A$5)を("たらば"=Sheet1!A:A) としてしまうと、エラーが出てしまうのですね。(列指定はできない?) それだけが残念でした。 でも、とても助かりました! もっと勉強するようにガンバリマス!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

シート3のC2セルに=IF(A2<>"",A2&"社の全問正解者数は"&SUMPRODUCT((A2=Sheet1!$A$2:$A$5)*(Sheet1!$I$2:$I$5=6))&"(人)")で如何でしょうか。 ※表範囲はご質問の通りとしていますので、調整して下さい。

michbird
質問者

お礼

早速のご回答、ありがとうございます。 私の質問の仕方が悪くて申し訳ありません。表示は「○○社の~」というのは特に必要ではなく、人数だけを表示できれば良かったのでした。 そのため、 =SUMPRODUCT(("たらば"=Sheet1!$A$2:$A$5)*(Sheet1!$I$2:$I$5=6)) と入力しましたところ、できました!! ("たらば"に変更したのは、ANo.1に記載した理由の通りです) どうもありがとうございます。 ところで、ずうずうしく再度のお願いなのですが、 上記で("たらば"=Sheet1!$A$2:$A$5)を"たらば"と"まつば"などの複数条件にすることは可能でしょうか? もし、お分かりになりましたらお教えくださいますようお願いいたします。

  • syou_ta85
  • ベストアンサー率57% (23/40)
回答No.2

関数一発というわけにはいきませんが sheet1の社名の左、もしくは備考の右に =CONCATENATE(社名,点数)あるいは=社名&点数の計算式を入れます。 すると社名に点数が連結された値がでますので(たらば6など)、その列を対象に「たらば6」「まつば6」でcountifでいかがでしょうか

michbird
質問者

お礼

早速のご回答、どうもありがとうございます。 なるほど、新しく列を作成すればそのような手もありますね! ただ、できましたら新たに列を作成せずに行ないたいと考えておりまして・・・・。 できなかったらお教えいただいた方法を使いたいと思います。 どうもありがとうございました。

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

Sheet3の「たらば」がA2セルにあるとき、A4セル(たらば社の満点の人数)は以下の式になります =SUMPRODUCT((Sheet1!$A$2:$A$5=A2)*(Sheet1!$I$2:$I$5=6)*1) A5(まつば社の満点の人数)はA4をコピーしてください

michbird
質問者

補足

早速のご回答、ありがとうございます。 =SUMPRODUCT((Sheet1!$A$2:$A$5=A2)*(Sheet1!$I$2:$I$5=6)*1) の「$A$2:$A$5」のところには列全体(A:A)を、「=A2」のところには"たらば"を入力したいのですが、 演算結果は『#NUM!』になってしまいます。 文字列を直接指定するのは無理なのでしょうか?