ExcelのCOUNTIF関数での<1>等の意味

このQ&Aのポイント
  • ExcelのCOUNTIF関数での<1>や<2>の意味について疑問があります。データがA列にあり、B列にCOUNTIF関数が入っていますが、なぜ1・2行目が2を返してくるのか、<1>や<2>がつくとどうなるのか知りたいです。
  • COUNTIF関数を使っている場合、<1>や<2>などの記号がデータの前につくと何か意味があるのでしょうか。なぜ1・2行目が2を返してくるのか、<1>や<2>がつくとどうなるのか教えてください。
  • ExcelのCOUNTIF関数を使っているのですが、データの前に<1>や<2>がつくとなぜか2を返してくることがあります。これは何か意味があるのでしょうか。また、<1>や<2>などの記号がつくと計算結果に影響があるのか知りたいです。
回答を見る
  • ベストアンサー

ExcelのCOUNTIF関数での<1>等の意味

こんにちは。 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とか<をつけても自分が思っていたような結果が返ってこないので、そもそも上のような例で<がつくとどういうことになるのでしょうか。 大変お手数ですが、よろしくお願いいたします。

  • hy0423
  • お礼率88% (198/225)

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

  • ベストアンサー
  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.4

> どうして=を入れるとうまくいくのですか? > =を入力することで完全に一致するデータをカウントしてくれるようになるのですか? すでに申し上げているように、バグと思われますので、正確な説明は そもそも無理があることを予め申し上げておきます。 ですので、以下の説明は私の個人的な「予測」とご理解下さい。 元の式 =COUNTIF($A$1:$A$6,A1) は、 =COUNTIF($A$1:$A$6,"<1>りんご") と同じように動作しますね。 これは不等号、< と > が入っているので、Excelは"<1>りんご"を 単なる文字列ではなく、条件式と解釈していると考えられます。 (その解釈の仕方が間違っている点が不具合=バグなわけですが) それで、その問題となっている不等号の前に、= をつける、つまり =COUNTIF($A$1:$A$6,"=<1>りんご") となると、条件式の解釈が「イコールより右側と等しいかどうか」 となるわけです(たぶん)。 つまり「<1>りんご」を条件式ではなく、文字列と見なした動きになって くれるのです(たぶん)。 ということで、ご納得頂けるでしょうか。 添付画像の例を見て頂ければ、=をつけることで、セル参照が文字列の 扱いに変化する事がご理解頂けるかと思います。

hy0423
質問者

お礼

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

その他の回答 (3)

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

私もCOUNTIF関数のバグではないかと思います。 回避策の一例として =COUNTIF($A$1:$A$6,A1)     ↓ =COUNTIF($A$1:$A$6,"="&A1) とする方法があります。 ご参考になれば。

hy0423
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

COUNTIF関数ではセルに入力されている文字列などの最初に<,>,<>,=,+,-などの演算子と呼ばれる記号が入力されている場合には、セル内のデータを単なる文字列を数えることとは違ってきますね。 お示しのデータの場合にはB1やB2セルの式では演算子で始まるデータがA1セルからA6セルの間で2か所のセルであることから2となっているようですね。 <1の場合には1未満のデータの数を表示しますね。 いずれにしてもCOUNTIF関数で引数としての条件でセルを指定する場合には演算子で始まるセルを指定することは避けることでしょう。

hy0423
質問者

お礼

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

  • w_HIRO_w
  • ベストアンサー率47% (9/19)
回答No.1

マイクロソフト社に問合せしてください。 =COUNTIF(範囲,検索条件) 検索条件には、等号、不等号を使えるので、EXCEL本体の条件解釈がおかしくなっているようですね。  (例)2未満のセル数 =COUNTIF($A$1:$A$6,"<2") ちなみに、こちらの環境(Microsoft Excel 2007)でも再現したので。 取りあえず回避するのであれば、等号、不等号以外の記号(例えば、普通のかっこ”()”など)に置き換えてみるのはどうでしょうか。 ※昔、新バグを発見するとボールペンが貰えたりしてた。。。

hy0423
質問者

お礼

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

関連するQ&A

  • エクセルのcountif関数で

    WindowsXPでEXCEL2003を使っています。 A列に固有名詞が入っており、 A列の中でのダブりチェックをcountif関数を使って、 実行しました。式は =countif($A$1:A7,A1) というような感じです。 ところが、見た目は全く変わらないのに、 (下記の図でいうと、「りんご」) 返ってきた数字は1でした。 ただし、「なし」のように2が返ってくるものもあります。 A列      B列 1 りんご     1 2 りんご     1 3 みかん     1 4 いちご     1 5 もも      1  6 なし      2 7 なし      2 (ずれて見苦しいかもしれませんがお許しを) 不思議に思い、一度エクセルからcsvに変換し、 またエクセルファイルになおして、 チェックしてみましたが、結果は同じ。 if関数を使ってみたらどうなるだろうかと チェックしてみたら今度は A1とA2の「りんご」は同じものである という 結果が返ってきました。 countif関数では別物と判断し、if関数では同じもの と判断する・・・ というのは、一体どういうことなのでしょうか? countif関数をなにか勘違いしているのかもしれませんが、よろしくお願いいたします。

  • Countif関数について教えてください。

    アンケートメールをCSV出力したものを集計しようと考えています。 Excelで、countif関数を使ってキーワードを元に数を出そうと思ったのですが、 正しい結果が出ません。 [hoge.xls]      A 1 りんごジュースは   りんごからできている 2 りんごとみかんは   違う果物だ 3 みかんとバナナでは   みかんの方がすっぱい といったデータがあるときに、「りんご」というキーワードが 含まれるセルの個数を出したいと考えています。 結果を出すのは、実際には別のファイルで、A列のキーワードが何個あるかをB列に出したいと考えています。 上記の例だと    A    B 1 りんご   2 2 バナナ   1 といった感じです。 そこでこういう関数を出してみました。 COUNTIF([hoge.xls]Sheet1!$A$1:$A$3,"*"&A1&"*") データが少ない場合には、この関数で正しく結果が出るのですが、 実際には300件以上のデータがあり、結果が実際の 件数よりもずっと少なく出ているような感じがします。 メールですので、元データには改行も含まれますし、 1つのセルに2つ以上、同一のキーワードが含まれることもあります。 原因らしきものの検討がつきません。 どうかお知恵をお貸しください。 #あるいは他のデータ個数抽出方法があれば、教えてください。 よろしくお願いします。

  • エクセル2003 countif関数の応用??

    エクセル2003です。 A列に”りんご”、”みかん”、”すいか”と果物の名前が入っています。 B列にはその果物が売れたときにだけ、 その重量を記入します。(全部1個ずつうります。) 別シートで りんごが何個売れたかを集計した式を作りたいのです。 Countif関数を使って出来そうな気がしたのですが、 検索条件をA列にすると すでにA列に記入済みの売れていないものも数えられてしまい、 売れたりんごの数だけを導き出すことができないのです。 If関数も使えば出来そうな気がするのですが、 うまくいきませんでした。 良いアイデア有りますでしょうか? 宜しくお願いします。 或いは集計機能を使って、同じシートにうまいことできるのだろうかとも 思うのですが、、、

  • excelのcountif関数の使い方

    EXCEL2000について教えてください。 過去ログにCOUNTIF関数の話題はたくさんありましたので、参考にしてみたのですがうまくできません。何が悪いのでしょう? やりたいことは、A列にある日付データから、B列の日付の度数をC列に計算したいのです。      A列        B列     C列 [1] 2002/10/1 10:31  2002/10/1  度数 [2] 2002/10/1 12:05  2002/10/2  度数 [3] 2002/10/1 13:35  2002/10/3  度数 [4] 2002/10/2 15:51  2002/10/4  度数 [5] 2002/10/2 19:02  2002/10/5  度数 A列は5000~10000行になり、その行数は不定です。 B列は1ヶ月分で、手入力の日付データですので時分秒は00:00:00です。 ここでC1以下に入れる式で悩んでいます。 (A列のデータ数)-(B2以上のデータ数)-(B1未満のデータ数) ということで =COUNT(A:A)-COUNTIF(A:A,">B2")-COUNTIF(K:K,"<B1") この式を検証してみると、中央と右のCOUNTIF関数の部分がゼロになってしまい、いつも総データ数が答えになってしまいます。  どこが間違っているのでしょう? よろしくお願いいたします。

  • countif関数の使い方について

    お世話になります。 下記の数式の{}がどういう風に計算されてるのか 教えてください。 A 1りんご 2りんご 3みかん 4りんご =SUM(COUNTIF(A1:A4,{"りんご","みかん"})) 自分なりに調べて配列数式?を意味してるということまでは分かったのですが どういう風にA1:A4と式が組まれてるのかがいまいちピンときません。。 またcountif関数がorやand関数と組み合わせできない理由も 配列が関係してるんでしょうか? 詳しい方よろしくお願いします。 ※当方エクセル初心者です

  • エクセルのCOUNTIF関数について

    エクセルのCOUNTIF関数について、というかCOUNTIF関数でよいのかどうかもよく分からないのですが、教えて下さい。 (1)まず、ワークシートのA列の1~100行目までの100マスを範囲として、数値を入力していくときに、仮に同じ数値を入力しようとしても、入力ができないようにしたいのです。 (2)次に、ワークシートのA列とC列のそれぞれ1~100行目までの合計200マスを範囲として、(1)と同じことをしたいのです。(つまりB列はとばして) (1)と(2)のようなことは可能でしょうか? お分かりの方がおられましたら、ぜひよろしくお願いします!

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • Excelでどのような関数を使えばいいでしょうか。

    関数について教えて下さい。 Excelで、同じBook内に以下のような2シートがあるときに、 (Sheet1)    A   B    C   D     1  1  あい   12  りんご 2     うえ   34  みかん   3     おか   56  イチゴ 4  1  おか   78  イチゴ (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3     おか   78   イチゴ 4     うえ   34   みかん  Sheet2のA列にSheet1にあるデータを入れたいのです。 まず、列B,C,Dのそれぞれのデータが横に3つ一致するものを探して 横3つのデータが同じなら、Sheet2のA列に、 Sheet1のA列にあるデータをシートBにも持ってくる、 というようなイメージです。 (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3  1  おか   78   イチゴ 4     うえ   34   みかん      ↑このようにしたいのです。 A列にどのような関数を入れればいいのでしょう。 (A列にあるのは1か空欄かのどちらかです。 同じ3つの組み合わせで、1の場合と空欄の場合両方があることはありません。) また、Sheet2には、A列に1とついた行に色を付けたいのです。 例えば、上記の例ですと Sheet2のB3:D3のセルに色をつけたいのです。 関数や条件付書式などで、できますでしょうか。

  • エクセル関数で、2列の情報を1列に順番に並べたい

    以下の元データのようにA~D列にある情報を、 下方のE列、F列にあるように情報を合わせて表示したい場合、 E列、F列にはどのような関数を入れたらよいでしょうか。 COUNTIFやVLOOKUP関数を試してみましたが、 うまく順番に並べることができず途方に暮れています。。。 どなたかお知恵がある方、マクロではなく関数で 教えていただけたらありがたいです。 ※A列はB列の情報番号、C列はD列の情報番号です。 ↓元データ↓ A  B    C   D 1 みかん  1 あ 1 みかん  2 い 1 みかん  3 う 2 りんご   4 え 2 りんご   5 お 3 すいか  6 か 3 すいか  7 き 3 すいか  8 く 3 すいか  9 け ↓このようにしたいです。↓ A  B    C  D   E  F 1 みかん  1  あ    1  みかん 1 みかん  2  い    1  あ 1 みかん  3  う    2  い 2 りんご   4  え    3  う 2 りんご   5  お    2  りんご 3 すいか  6  か    4  え 3 すいか  7  き    5  お 3 すいか  8  く     3  すいか 3 すいか  9  け    6  か                 7  き                 8  く                  9  け 何とぞよろしくお願いします。

  • エクセル関数の検索について

    エクセルの関数についてご教授下さい。 以下のように文字列が記入されています。 (列A) りんご a b c (w) (k) ! みかん u b c (w) (k) ! ○”りんご”の行から”!”の行までを検索して、文字列”a”があるかを確認したい ○”みかん”の行から”!”の行までを検索して、文字列”a”があるかを確認したい ○()で記載している文字列は場合によって記入されているため、毎回同じ行数ではない このような条件がある時に、関数で要件を満たす事はできますでしょうか? イメージ的には、以下のようにできればと思ってます。 1.A列全体から”りんご”を検索 2.”りんご”行から下の”!”までの間で”a”があるかを確認 3.A列全体から”みかん”を検索 4.”みかん”行から下の”!”までの間で”a”があるかを確認 もしくは 1.A列全体から”りんご”を検索 2.”りんご”行から下で、”a”があるかを確認 3.A列全体から”みかん”を検索 4.”みかん”行から下で、”a”があるかを確認 このような感じで作れますでしょうか? よろしくお願いいたします。

専門家に質問してみよう