• ベストアンサー

Excel2010のCOUNTIF関数で誤動作

A列に20桁の数字ばかりの「文字列」が入ったセルが1000行ほどあります。 A列の書式は文字列に設定してあります。 特定のセルの中身が重複してないことを確認しようと。 B1=COUNTIF(A:A,A1) のようにしたところ、うまく動きませんでした。 調査したところセル先頭から15文字までしか認識してくれません。 文字列扱いして欲しいのですが、数字ばかりなのが気に入らないようです。 数字だけのまま20桁認識させる方法は無いものでしょうか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>調査したところセル先頭から15文字までしか認識してくれません。 文字列データでも比較するときに数値化が可能な値は数値として扱うためと考えられます。 有効数字の桁数に係わる問題化と思います。 >文字列扱いして欲しいのですが、数字ばかりなのが気に入らないようです。 何処かに英字や記号が有れば純粋に文字列として扱われますので桁数の制限を避けられるでしょう。 >数字だけのまま20桁認識させる方法は無いものでしょうか? COUNTIF関数ではできないみたいです。 SUMPRODUCT関数、SUM関数で配列を前処理することでカウントできます。 前処理は次の式になります。 (A:A=A1)*1 次の3つの式は正しくカウントできています。 =SUMPRODUCT((A:A=A1)*1) =SUM(INDEX((A:A=A1)*1,,1)) =SUM((A:A=A1)*1) 3番目のSUM関数の場合は数式の確定時にCtrlとShiftを押しながらEnterキーの打鍵が必要です。

ts3m-ickw
質問者

お礼

回答ありがとうございます。 確かにCOUNTIFでは無理そうですね。 おお‥‥No.2さんの回答に加えてさらに方法があるとは目から鱗です。 情報の提供に感謝します。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

完全に文字列扱いになる作業列を作ればCOUNTIFが使えます。 添付の図ではC1セルに↓の式を入れ、下にコピーしています。 ="_"&A1 B1セルには =COUNTIF(C:C,"_"&A1) です。

ts3m-ickw
質問者

お礼

回答ありがとうです。 確かに数字以外の文字を入れるとうまく動くんですよね‥‥。 表計算ソフトなので数字のみのセルは数字として優先判断してそうです。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

千行程度であれば =SUMPRODUCT((A$1:A$1000=A1)*1) 以下コピー で計算してみます。 この式では$A:$Aとかで計算してはいけません。

ts3m-ickw
質問者

お礼

回答ありがとうです。 なるほど、これはうまいですね。 1つ賢くなりました。感謝。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

比較するときに文字列を加えてみてはいかがでしょう。 COUNTIF($A1:A1,A1&"") とか。 (スプレッドシート型の表計算ソフトは16桁での計算ですから認識できる数値は15桁までってのは仕様なのでしかたないですね。) なお、手元にExcelを動作させる環境がありませんので数式の動作は未確認です。 思ったように動作しないかもしれません。

ts3m-ickw
質問者

お礼

回答ありがとうです。 残念ながらご提示の方法ではうまくいきませんでした。 文字列にキャストできるといいんですけどね‥‥。

関連するQ&A