• ベストアンサー
  • すぐに回答を!

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

  • 質問No.2285815
  • 閲覧数164
  • ありがとう数4
  • 回答数5

お礼率 80% (17/21)

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(人)」と表示させたいのですが・・・。
良い方法がありましたら、お教えくださいますようお願いいたします。

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

  • 回答No.5
  • ベストアンサー

ベストアンサー率 44% (1383/3079)

#01です

>演算結果は『#NUM!』になってしまいます。
の理由は範囲指定にA:Aを使用したからです。

SUMPRODUCT関数では列単位の範囲指定はできません。
(A2は"たらば"にするのは問題なし)

複合条件は以下になります
=SUMPRODUCT((Sheet1!$A2:$A5={"たらば","まつば"})*(Sheet1!$I$2:$I$5=6)*1)
お礼コメント
michbird

お礼率 80% (17/21)

おぉぉっっ!!!
すごい、綺麗に設定ができました!

列単位の範囲指定はできないのですね。ご教授ありがとうございます。
本当に感謝です。どうもありがとうございました!!!
投稿日時:2006/07/19 19:06

その他の回答 (全4件)

  • 回答No.4

ベストアンサー率 38% (1910/4994)

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

お礼率 80% (17/21)

図々しいお願いにも丁寧にお答えいただき、本当にありがとうございます。

(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)
としてしまうと、エラーが出てしまうのですね。(列指定はできない?)
それだけが残念でした。
でも、とても助かりました! もっと勉強するようにガンバリマス!
投稿日時:2006/07/19 18:11
  • 回答No.3

ベストアンサー率 38% (1910/4994)

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

お礼率 80% (17/21)

早速のご回答、ありがとうございます。

私の質問の仕方が悪くて申し訳ありません。表示は「○○社の~」というのは特に必要ではなく、人数だけを表示できれば良かったのでした。
そのため、
=SUMPRODUCT(("たらば"=Sheet1!$A$2:$A$5)*(Sheet1!$I$2:$I$5=6))
と入力しましたところ、できました!!
("たらば"に変更したのは、ANo.1に記載した理由の通りです)

どうもありがとうございます。

ところで、ずうずうしく再度のお願いなのですが、
上記で("たらば"=Sheet1!$A$2:$A$5)を"たらば"と"まつば"などの複数条件にすることは可能でしょうか?
もし、お分かりになりましたらお教えくださいますようお願いいたします。
投稿日時:2006/07/19 17:27
  • 回答No.2

ベストアンサー率 57% (23/40)

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

お礼率 80% (17/21)

早速のご回答、どうもありがとうございます。

なるほど、新しく列を作成すればそのような手もありますね!
ただ、できましたら新たに列を作成せずに行ないたいと考えておりまして・・・・。
できなかったらお教えいただいた方法を使いたいと思います。
どうもありがとうございました。
投稿日時:2006/07/19 17:14
  • 回答No.1

ベストアンサー率 44% (1383/3079)

Sheet3の「たらば」がA2セルにあるとき、A4セル(たらば社の満点の人数)は以下の式になります

=SUMPRODUCT((Sheet1!$A$2:$A$5=A2)*(Sheet1!$I$2:$I$5=6)*1)

A5(まつば社の満点の人数)はA4をコピーしてください
補足コメント
michbird

お礼率 80% (17/21)

早速のご回答、ありがとうございます。

=SUMPRODUCT((Sheet1!$A$2:$A$5=A2)*(Sheet1!$I$2:$I$5=6)*1)
の「$A$2:$A$5」のところには列全体(A:A)を、「=A2」のところには"たらば"を入力したいのですが、
演算結果は『#NUM!』になってしまいます。
文字列を直接指定するのは無理なのでしょうか?
投稿日時:2006/07/19 17:01
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ