- 締切済み
countif関数の検索条件について
OS:Windows XP Professional SP2 Excel:2003 SP2 countif関数の結果が想定通りに返ってこないので、 どなたか原因の分かる方がおられましたらご教示をお願いします。 A列 B列 1 012345678901230555010 4 2 012345678901230555020 4 3 012345678901230555030 4 4 012345678901230565049 4 5 012345678901230900000 2 6 012345678901230902340 2 7 01234567890123090235 1 セルB1には「=countif(A:A,A1)」と入力しています。 ※B2、B3と同様にコピーしており、検索対象を変更しています。 A列の上記7レコードは全て違う文字列であるため B列の結果は全てが「1」になると思っていたのですが 上記のような結果が返ってきました。 A列の文字列を注意深く見ると、以下の条件全てを満たすものは 同じ文字列と認識しているようです。 1、文字数が同じ 2、1文字目から15文字目まで同じ文字列 例えば1レコード目から4レコード目は「0123456789012305」が同じですが 5レコード目は「0123456789012309」と16文字目が異なります。 これは何故でしょう、excelの制限でしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
なるほど~ 確かに数値15桁で比較されているようですね。。 ちなみにSUMPRODUCT関数では正確に判定するようです。 =SUMPRODUCT(($A$1:$A$8=A1)*1) でもcountifで実現したいんですよね? (・へ・;;)むむむむ・・・
確かに妙な挙動ですねぇ。 原因はおそらく#1さんのおっしゃるとおり、有効桁の制限によるものと思われますが、 そもそもどうしてCOUNTIFは文字列の値をわざわざ数値として解釈する仕様になっているのやら…。 対策としては、とりあえず配列数式を使って、 =SUM(--(A$1:A$9999=A1)) のようにすれば、ご要望の結果が返るはずです。 (Excel2003で動作確認済) ※通常の数式は、数式を入力した後Enterキーで確定しますが、 これは配列数式なので、CtrlとShiftを押しながらEnterで確定してください。 ※配列はA:Aのように列全体について指定することはできませんから、 上記のように十分に大きな行数について絶対参照で指定する必要があります。
- himajin100000
- ベストアンサー率54% (1660/3060)
http://support.microsoft.com/kb/78113/ja http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0 2^52=4.5036E+15 つまり入っている内容が「数字として解釈され」かつ「その桁数が15桁」を超えると浮動小数点数として表現できなくなる ためしに数字でない「あ」とか「い」とかをおいてみると1になる ="0123456789012305" では駄目だった。どうしようかな?(計算すると数字として変換されてしまう模様)
お礼
himajin100000様 さっそくの回答ありがとうございます。 >="0123456789012305" >では駄目だった。 あるHPに「文字列は"で囲む事」とありましたので 私も文字列は試してみました。が、ダメでした。 ホントにどうしましょう。。。という感じです。 引き続き回答をお待ちしておりますm(__)m