• ベストアンサー

ExcelのCOUNTIF関数で条件を複数定義する

はじまして、こんにちは。 現在Excel(2000)でリストを作り、COUNTIF関数で計算する作業をしています。 そこで質問なんですが、現在"○"と"×"をデータとして入れ、 COUNTIF関数の検索条件で"○"とし、○ならカウントとしてリスト毎の合計数を計算しているんですが、 この方法だとデータが入っていないリストまで合計数が0になってしまします。 これではすべて×でも、データが入っていなくても0になってしまい、区別できなくて困っています。 これを、データが存在している場合の"○"の数と条件付けたいんですが、このような複数の条件設定はどうやれば出来るんでしょうか? 宜しくお願いします。

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

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

出来たのですね!^^ 良かったです。 あと、質問の件ですが、 まず1つ目は、お書きの通り、問題があっているかどうかを、 =TRUEまたは=FALSE で回答してくれています。 今回の場合、COUNTA(B2:C2)=0 で、 B2からC2までの間で文字や数字が入力されていなければ、 ”=0 ” すなわち、=TRUE そして、○×なにか1つでも入力があれば、 ”≠0 ” すなわち、=FALSE となります。 それによって、返す答えが "真の場合"(=TRUE)、"偽の場合"(=FALSE) に分けられ、2つの条件を天秤にかけ、もし、~なら  という関数が成立します。 今回の場合でいうと、 「もし、セルカウントが0なら空白、0じゃなければ○の数を計算して表示」 となります。 あと2つ目の質問ですが、 これは、私自身も詳しく分かっている訳ではないのでネットで調べました。 粗方をコピペしましたが、さらに詳しく内容を書いてくれているので、 サイトの方へ行ってみて下さい。では、お疲れ様でした。     #DIV/0!  割り算で分母がゼロ   #NAME?   関数名や範囲名が間違っている   #NUM!   大きすぎる数値又は小さすぎる数値   #NULL!   指定した2つのセル範囲に共通部分がない   #N/A   関数や数式に使用できる値がない   #REF!   セルの参照がおかしい   #VALUE!  引数の種類が正しくない     #######  セルの幅が狭く結果を表示できない

参考URL:
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040713.html
kuwabara0
質問者

お礼

guchi_yamaさん、有り難うございました。 希望どうりの結果を得る事が出来たばかりでなく、 追加質問にも回答を頂き、大変勉強になりました。 今後も少しずつ、学習しながらExcel(関数)を自由自在に扱えるよう頑張ります。 本当に丁寧なご回答有り難うございました。

その他の回答 (6)

回答No.6

それなら、列と行が逆になるだけなので、 今まで通りの式を使って、 COUNTA(○2:○2) と、COUNTIF(○2:○2)の ○部分のアルファベットを、 質問項目のある(○×をリスト化している)部分に変更すれば出来ます。 下記は、取り合えず例題の通りの範囲にしています。    ↓これは、もし、~だったら っという関数です。 D2=IF(COUNTA(B2:C2)=0,"",COUNTIF(B2:C2,"○"))       ↑これは、○×に関わらず、何らかの文字、数字が        セルに入力されるとカウントされる関数です。 よって、B2からC2までの設問がある間に、入力規則で○×を 入力しない限り、カウントは"0"です。 また、 D2=IF(COUNTA(B2:C2)=0,"",COUNTIF(B2:C2,"○"))                   ↑これは文字列ブランクの記号です。 よって、カウントが"0"のときには、この関数を入れたセル、 即ち、点数欄のセルは、ブランク(空白)になるということです。 そして、IF関数の特徴は、問題の答えが間違えている場合、後ろの不正解を 採用するという関数です。       ↓これが『COUNTA()=0』に当たる部分  =IF(『問題』,正解,不正解)            ↑これが、『""』にあたる部分 よって、不正解(○ないし×等の文字、数字が入力された時)の時には、 ようやく、○の数をCOUNTIF()にて計算されて、 点数欄に記載されることとなります。 なので、長々とした説明になりましたが、 上記の式で、何も入力しないときは空白、 全て×の場合は0、 ○がいくつかあれば○の数を点数欄のセルに表記します。 ご理解頂けましたでしょうか? また、「ここが違う!」、「ここはどうやるの?」 っていう部分があればまた補足下さいませ。 宜しくお願い致します。

kuwabara0
質問者

補足

guchi_yamaさん、大変ご丁寧にありがとうございます。 親切でわかり易い説明のお陰で無事、希望どおりの結果が出ました。 空欄以外のセルをカウントできるCOUNTA関数をはじめて知り、 今後もこれを応用して色々使っていけそうなので勉強になりました。 ところで、質問内容に関連する所で2つほど疑問点が有ったので、 ご教示頂けたらありがたいです。 まず一つ目は、IF関数についてなんですが、関数のナビゲーションを使って関数を作る際、 IF関数の"論理式"の右側(記入欄の外)に=TRUEまたはFALSEと表示されている所がありますが、 これは何を意味しているんでしょうか? 論理式の下に、"真の場合"、"偽の場合"と定義する所があるので、論理式が成り立つ場合がTRUE(真の場合)、 成り立たない場合がFALSE(偽の場合)と思っていたんですが、 "論理式"の右側(記入欄の外)に表示されている"TRUE"または"FALSE"は上記の真偽に関わらず、 論理式自体に"TRUE"または"FALSE"が出ているようで、論理式の不等号を変更すると変わるようです。 これは、論理式が正しいか間違っているかということですか? でも、ここが"FALSE"でも関数が正常に機能しているので、論理式自体の正誤では無いような気もするんですが・・・。 ここの部分がイマイチ分らないので、教えて頂けませんでしょうか? 二つ目はRANK関数で順位付けした際、同じような空欄でも、 #VALUE!と#N/Aが出るケースがあるんですが、この違いは何なんでしょうか? 以上です。 宜しければ、今後の為にもこの機会に疑問点は解決しておきたいので、アドバイスお願いします。

回答No.5

ANo.4です。 A2~A6までのデータというのは項目ではないのですが? それが下記に対する項目で、それを見ながらB2~B6までに ○×を付けるのではないのでしょうか? それとも、A2~A6までのデータが入っていた時点で、 それを上書きするように○×をリストにて入力するのですか? 表のイメージがつかめないので もし宜しければ、表を例題に書いて頂けませんか? 私のイメージでは    A        B     C    D   E  ・ ・ ・ 1 名前      田中   山田  佐藤 2△△出来る   ○    ×    ○ 3△▽出来る   ×    ○    ○ 4▽□使える   ○    ○    × 5▽△使える   ×    ×    ○ 6□△が出る   ○    ×    ○ 7  計       3点    2点   4点 8 ・ ・   と、いう表をイメージしているのですが、 上記の表で○×部分がリスト(入力規則)になっているのであれば、 前回回答した式で出来ると思いますよ。 補足頂いたので、それに合わせた式に直すと、 B7=IF(COUNTA(B2:B6)=0,"",COUNTIF(B2:B6,"○")) 違うようであれば、また補足下さい。

kuwabara0
質問者

補足

レス、ありがとうございます。 下の説明と列と行が逆になりますが、 _|__A_|__B__|__C_|_D__| 1|_名前_|_ 問1__| _問2_|_合計_| 2|__あ_|__○__|__○_|__2_| 3|__い_|_____|____|____| 4|__う_|__×__|__×_|__0_ | 5|__え_|__○__|__×_|__1_ | 上のようなリストです。 ○、×は入力規則により選択、 それを、COUNTIF関数で合計に○の合計数を出しています。 ただし、以前のコメントで説明したとおり、この設定だと、 A3(い)の様に○、×ともに入っていないリストも合計が0と出てしまいます。 これを上記のA3(い)の様に、B3、C3が空の時はD3も空欄にしたいという事です。

回答No.4

>データが存在している場合の"○"の数と条件付けたいんですが、... という事は、データが存在していないときには数を表示しない。 はたまた、×の数は数えなくて良い。 という事でいいのでしょうか? その場合 単純に、 A1~A10に質問項目列、B1~B10に『○、×』のどちらかを入力する列、 それ以降、C1~C10、D1~D10、・・・と○×入力列が並んでいると仮定して、 B11=IF(COUNTA(B1:B10)=0,"",COUNTIF(B1:B10,"○")) を11行目にドラッグコピーしてみては? これは、あくまで○×を手入力もしくはリストなどでの入力を行うものとし、 入力していないセルはブランクの状態である必要があります。 もし関数等で○×を表示させている場合は、上記式では無理な為、 他の方法が必要です。その場合、○×部分にどういう関数式を入れているのか お教え下されば、他の方法も見つかると思います。

kuwabara0
質問者

補足

レス有り難うございます。 説明不足ですいません。 簡単な説明ですが、 A1に名前、そして、A2~A6にそれぞれデータがあれば、"○"か"×"を"入力規則"を使って、どちらか選択していく形式です。 そして、A7にCOUNTIF関数を使って、○の合計数を出しています。 ちなみに、○は1つ一点、×は0点という設定です。 そこで、COUNTIF関数を使って、検索条件を"○"で定義したんですが、 データが入っている場合は、問題なく合計数が出るんですが、 この方法だと"○"の数だけが条件なので、データが入っていないリストまで、合計が0になってしまいます。 データが入っていないリストはそのまま空欄になるように、したいんですが、Excel初心者で上手く出来ない状態です。 出来れば、関数を直接打って行くことはできないので、より簡単に何処でも再現できるように関数ナビゲーションに沿って定義していく方法があれば、ご教示お願いします。

noname#42041
noname#42041
回答No.3

COUNTIFS関数で我慢できませんか? この関数なら複数条件指定できますけど。

kuwabara0
質問者

お礼

レスありがとうございます。 COUNTIFS関数はExcel2007から追加された関数らしく、 私が使っているExcel2000では使えないようです。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

COUNTIF関数でのやり方ですか? ちょっと思いつかないです。すいません。 2つの条件(データがある、○である等々)を満たす同じ行であることが 必要です。 何らかの方法があるのかも知れないですが、私はもっぱらこの方法です。

kuwabara0
質問者

お礼

レスありがとうございます。 個人的に使い慣れている関数で出来たほうが、後で応用し易いかなと思い、 COUNTIF関数での方法をお願いしていました。 しかし、他の方法でも可能だと分ったので勉強になりました。 ありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

データの範囲をA1~A10 ○×の範囲を B1~B10 とした時に C1 =SUMPRODUCT((A1:A10<>"")*(B1:B10="○")) データがあって○の個数 C2 =SUMPRODUCT((A1:A10<>"")*(B1:B10="×")) データがあって×の個数 では、どうでしょうか?

kuwabara0
質問者

お礼

n-junさん、ありがとうございます。 SUMPRODUCT関数でも出来るんですね。 勉強になります。この関数自体まったく知りませんでした。 できれば、馴染みのあるCOUNTIF関数で出来たほうが後々また、 こういう機会が有ったとき、取り組みやすいのでできればCOUNTIF関数で 試したいと思っているんですが、COUNTIF関数では出来ないんでしょうか?