ここから本文です

countif関数において、検索値が文字列として扱われる場合と式として処理される場合...

dis********さん

2016/10/1617:50:28

countif関数において、検索値が文字列として扱われる場合と式として処理される場合の違い、この質問では「=」を使用した場合の結果についてお伺いします。

この質問は以下の質問にて、質問内容が複数になり、わかりにくいため、1問ずつ切り離しました。サンプルデータとして入力されている文字や関数は下記質問にてご確認いただければ幸いです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1216549564...

尚、同様に切り離した質問に対するご回答で、countif関数自体に問題があるということが、
理解できつつあります。今後は他の方法を検討していきたいと思いますが、
この際せっかくなので、今回の分に関しては質問を続けたいと思います。

上記質問において
12 =COUNTIF(B:B,"= ") →0
は何を意味するのでしょうか?
確かに、「半角スペースのセル」の意味であれば、
=COUNTIF(B:B," ")
と書けばよかったというのは分かります。
ただ、それならば
11 = COUNTIF(B:B,"=") →行最大値の1048576―13の1048563
は文字列「=」を探しているのかというと、
表面上「=」と表示されているものは0、関数に含まれる「=」に反応したとしても13で
説明がつきません。

よって
4 =COUNTIF(B:B,">= ") や 8 =COUNTIF(B:B,"<> ") のように
12も「= 」の文字列ではなく「半角スペースのセル」を探しているのではないかと思うのですが・・
もちろん=COUNTIF(B:B,">=みかん") なんて書いてしまったら、「>=みかん」の文字列を探していると言われたら納得できるのですが、「半角スペース」は4や8でも「みかん」のような文字列ではなく不等号のように記号に近い形で扱われていると思うのです。

7 =COUNTIF(B:B,"<>") と 10 = COUNTIF(B:B,"<>"&””)が同じという関係性と同じとすると、11は= COUNTIF(B:B,"="&"")ともとらえられ、そうしますと、
空欄の数⇒全体数から関数が入っている13行を除いた数ということで、数値が納得できます。

12は何を求めた数値なのでしょうか?
また文字列として認識されていたのならば、11との違いな何でしょうか?
様々なパターンを「こうだったら?」と検証した際に作った式なので、
実際には=COUNTIF(B:B," ")と書くのでしょうが、
この際ですので、理解しておきたいと思い、質問しました。

閲覧数:
161
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

gru********さん

2016/10/1618:39:57

すでに回答した通りcountif系関数の作りの甘さが招いた現象で、論理的にきちんと整理して作った仕様ではないと考えるのが妥当です。検索条件文字列文字列の先頭の比較演算子らしき文字は比較演算子として処理します。比較演算子がない場合は等号を補って考えます。空文字列と空欄の扱いはめちゃくちゃです。

12は「スペースに等しい」を数えます。
11は「空文字列に等しい」が良さそうなのに「空欄に等しい」を数えます。

質問した人からのコメント

2016/10/21 00:23:03

他の質問にて理解したのですが、文字列化した不等号と数式の不等号では、ブランクセルと空文字列の区別をするかどうかで差があるようですね。
差があるのならば、Excelも明示してくださればいいのですが・・
だからこそ、一見矛盾があるように感じてしまいますよね。
COUNTIF関数に限らず、この様な隠れたルールは存在し、奥が深いなと考えさせられました。ありがとうございました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる