- ベストアンサー
エクセルの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関数をなにか勘違いしているのかもしれませんが、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
推測ですが、ひょっとしたら 表示はりんごでも空白がくっついてませんか? それを回避するには、B1に=trim(a1)と入力して それをコピーしてください。 そのあとで、 c1に=countif(B$1:B$100,B1)と入力して (100は適当な数値です) それをコピーすればOKかも 勘違いでしたらごめんなさい
その他の回答 (3)
- zenjee
- ベストアンサー率47% (50/106)
質問ですが countif($A$1:A7,A1)は countif($A$1:$A$7,A1) ではないのですか? 絶対参照をA1だけにするとプルダウンコピーしたときに7行目は countif($A$1:A13,A7)になりますが…… それとA1の「りんご」をA2にプルダウンコピーして試されましたか? 私がデータを入力し、試した結果ではあなたの計算式で正しい答えが出ます。 ただし、あなたの投稿の文字をコピペして試したら間違った答えが出ましたので、TRIM関数で文字を変換したところ正しい答が出ました。 CSVに変換したことに意味があるかどうか分かりませんが、同じデータがIF関数ではYes、COUNTIFではNoなんて理論的にありえないでしょう。
お礼
回答、ありがとうございました。 この場を借りて皆様にもう一度・・・ 問題は解決し、今後にも役立てられる回答をいただき、ありがとうございました。
補足
補足が遅くなり、申し訳ございませんでした。 最初に使っていたcountif関数は、知人に教えてもらったものそのものでした。初心者なものでして、「絶対参照」を完全に理解できたのは、2番目に答えていただいた方の回答を読んで自分で実行してみた後でした。 ですので、 >countif($A$1:A7,A1)は >countif($A$1:$A$7,A1) >ではないのですか? は、今は後者が正しいものだと理解しています。 また、A1の「りんご」をA2にプルダウンコピーをして試しても見ました。このときはもちろん、同じものだという結果がでました。
- kaisendon
- ベストアンサー率44% (114/257)
こんにちは B1に入れる式は =countif($A$1:A7,A1) ではなく =countif($A$1:A1,A1) とするか =countif($A$1:$A$7,A1) とする必要があると思います。 どちらの式で重複を判断するのかは それぞれの式を試して ご都合の良い方をお選び下さい。
お礼
こんにちは 早速のご回答、ありがとうございます。 おっしゃるとおりに式を書き換えてみましたが、 やはり、別のものという結果がでました。 教えてくださった式は今後活用したいと思います! ありがとうございました。
- stupid_honey
- ベストアンサー率32% (17/52)
thiel0215さんの通りやってみると結果はちゃんと合ってます。 恐らく関数の部分をドラッグしたときにcountifのセルの範囲がずれてるとしか思えません。 セルの範囲が合っているのであれば、原因はわかりませんが。。。
お礼
早速のご回答ありがとうございました。 式を確認しましたが、範囲はあっていました。 どうしてなんでしょうねぇ・・・。 質問文に書くのを忘れていましたが、 データは自分で打ち込んだものではなく、別のところでアクセスからクエリで引っ張ってきてエクセルファイルにしたものなので、そこらへんに問題があるのかもしれません。
お礼
早速のご回答、ありがとうございます。 ドンピシャでした!countif関数でうまくいかなかった理由・・・後ろに空白がくっついているのといないのとでは別物なんですねー・・・基礎的なことですよね 汗。知らずになんともお恥ずかしい限りですが、本当にありがとうございました。助かりました。trim関数も覚えます! ということは、どうしてif関数では同じものとして認識したのでしょう?if関数では自動的に後ろの空白はいれずに計算しているのでしょうか?