dポイントプレゼントキャンペーン実施中!

こんにちは。
COUNTIF関数で質問があります。
以下のようなデータがあります。
A列にデータ、B列にCOUNTIF関数が入っていてその結果を返しているとします。
(いずれも1行目~6行目までにデータが入っています)


(A列)          (B列)
<1>りんご        2(=COUNTIF($A$1:$A$6,A1))
<2>みかん        2(=COUNTIF($A$1:$A$6,A2))
パイナップル      1(=COUNTIF($A$1:$A$6,A3))
桃             1(=COUNTIF($A$1:$A$6,A4))
りんご          1(=COUNTIF($A$1:$A$6,A5))
アボカド         1(=COUNTIF($A$1:$A$6,A6))


疑問なのは、厳密に言うと上の条件だとB列は全部1になるのではないかと思ったのに、なぜ1・2行目は2を返してくるのでしょうか、ということです。
<1>や<2>が頭についたものでそのようになっているので、これは何か意味があると思いました。
どのような意味を持つのでしょうか。

また、<1とか<をつけても自分が思っていたような結果が返ってこないので、そもそも上のような例で<がつくとどういうことになるのでしょうか。



大変お手数ですが、よろしくお願いいたします。

A 回答 (4件)

> どうして=を入れるとうまくいくのですか?


> =を入力することで完全に一致するデータをカウントしてくれるようになるのですか?
すでに申し上げているように、バグと思われますので、正確な説明は
そもそも無理があることを予め申し上げておきます。
ですので、以下の説明は私の個人的な「予測」とご理解下さい。

元の式
=COUNTIF($A$1:$A$6,A1)
は、
=COUNTIF($A$1:$A$6,"<1>りんご")
と同じように動作しますね。
これは不等号、< と > が入っているので、Excelは"<1>りんご"を
単なる文字列ではなく、条件式と解釈していると考えられます。
(その解釈の仕方が間違っている点が不具合=バグなわけですが)

それで、その問題となっている不等号の前に、= をつける、つまり
=COUNTIF($A$1:$A$6,"=<1>りんご")
となると、条件式の解釈が「イコールより右側と等しいかどうか」
となるわけです(たぶん)。
つまり「<1>りんご」を条件式ではなく、文字列と見なした動きになって
くれるのです(たぶん)。

ということで、ご納得頂けるでしょうか。

添付画像の例を見て頂ければ、=をつけることで、セル参照が文字列の
扱いに変化する事がご理解頂けるかと思います。
「ExcelのCOUNTIF関数での<1>」の回答画像4
    • good
    • 0
この回答へのお礼

kigoshiさん、再びのコメントをありがとうございます。
添付画像までつけていただいて、本当にありがとうございます。
関数のバグということであくまでもkigoshiさんのご意見ということで理解いたしました。

ありがとうございました。

お礼日時:2011/04/06 23:41

私もCOUNTIF関数のバグではないかと思います。



回避策の一例として

=COUNTIF($A$1:$A$6,A1)
    ↓
=COUNTIF($A$1:$A$6,"="&A1)

とする方法があります。
ご参考になれば。
    • good
    • 0
この回答へのお礼

kigoshiさん、コメントありがとうございました。
回避策の一例を試したら、本当にうまくできました!
どうしてですか?
どうして=を入れるとうまくいくのですか?
=を入力することで完全に一致するデータをカウントしてくれるようになるのですか?

お手数ですが、もしよろしければ教えていただけますでしょうか。

お礼日時:2011/04/06 20:08

COUNTIF関数ではセルに入力されている文字列などの最初に<,>,<>,=,+,-などの演算子と呼ばれる記号が入力されている場合には、セル内のデータを単なる文字列を数えることとは違ってきますね。


お示しのデータの場合にはB1やB2セルの式では演算子で始まるデータがA1セルからA6セルの間で2か所のセルであることから2となっているようですね。
<1の場合には1未満のデータの数を表示しますね。
いずれにしてもCOUNTIF関数で引数としての条件でセルを指定する場合には演算子で始まるセルを指定することは避けることでしょう。
    • good
    • 0
この回答へのお礼

KURUMITOさん、コメントありがとうございました。
<1>のような入力が演算子とみなされてしまうんですね。
気をつけたいところですが、使用しているシステムの仕様上それを排除した状況をつくることができないのでもう一段階処理を加えることになりそうです。

ありがとうございました。

お礼日時:2011/04/06 20:01

マイクロソフト社に問合せしてください。



=COUNTIF(範囲,検索条件)
検索条件には、等号、不等号を使えるので、EXCEL本体の条件解釈がおかしくなっているようですね。
 (例)2未満のセル数 =COUNTIF($A$1:$A$6,"<2")
ちなみに、こちらの環境(Microsoft Excel 2007)でも再現したので。

取りあえず回避するのであれば、等号、不等号以外の記号(例えば、普通のかっこ”()”など)に置き換えてみるのはどうでしょうか。

※昔、新バグを発見するとボールペンが貰えたりしてた。。。
    • good
    • 0
この回答へのお礼

w_HIRO_wさん、コメントありがとうごぁいます。
マイクロソフトに問い合わせするような事例なのですね。
全くそのような発想がありませんでした。
バグの可能性があるのですね。

ありがとうございます。

お礼日時:2011/04/06 07:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!