= countifは“ 0001234”は“ 0001234”と等しくないと言います文字列を数字ではなくテキストとして扱うようにcountifに強制するにはどうすればいいですか?


3

スプレッドシートに格納されたいくつかの製品コードがあります。

COUNTIFに依存しない機能と同等の操作を実行しています(コメント内の詳細ですが、質問には関係ありません)。先頭が0の数字を含む文字列を処理すると、Countifierが壊れるようです。

簡単なデモ用

たとえば、A1に "foo"が含まれているとします。

=COUNTIF(A1,"<>"&A1)

つまり、A1には(もちろん)A1と等しくないセルはありません。

しかし、もしA1がテキストとして "0001234"を含んでいれば、それは1を返します。 A1はA1と同じではありません

さらなる情報: =countif(A1:"<>"&"1234") 0を返すので、問題はExcelが自動的に文字列 "0001234"を数字1234に変換することですが、 基準 ではなく 範囲 それから "0001234" = / = 1234を見つけます。

回避策:すべてのコードにジャンクテキスト文字を追加したヘルパー列を作成します。私は現在、すべてのリストに= "@"&amp; X1を含むヘルパー列を追加しましたが、それは優雅な解決策ではありません。


式は次のようにしないでください。 =Countif(A1:A100,"<>"&A1)
Scott Craner

すべての商品を先行ゼロで識別しようとしていますか?
Raystafarian

こんにちはそこ光線、質問であなたに会うのはいつも良いです。私が使用していた実際の関数は= COUNTIFS(A:A、A1、B:B、 "&lt;&gt;"&amp; B1)&lt; 1であるが、識別子が同じで異なるレコードがある場合はFALSEを返すこのデータでは、BはAに固有である必要があります(その逆は不可)。エラーチェックを行っています。 (つまり、製品2345は属性001を持つことができます。属性001を持つ他の製品もリストにありますが、2345は属性001と002の両方を持つべきではありません)
Some_Guy

これが質問に含まれていませんでした。なぜなら、それが私がcountifのふるまいについて直面している実際の問題を難解にするかもしれないと思ったからです。私が実行しているタスクは私のものより洗練された解決策を持っているかもしれませんが、結局のところ私の式はそれがするべきことを行います(先行する0を持つコードを除いて)。私は回避策を持っていますが、それがそうであったように「記録に」この問題を抱えていることは価値があるようです。
Some_Guy

時にはVBaがより良い選択ですが、私はそれがあなたにとっての選択肢ではないと思いますか?
Dave

回答:


2

編集 追加から変更する NUL 追加する * 基準に。

Booleansでも同様の動作が見られます。私が "強制"するために見つけた一つの方法 COUNTIF 変換を行わないためには、 * 基準引数に。例えば:

=COUNTIF(A1,"<>" & A1 & "*" )

戻ります 0 文字列でも 0001234 A1で

"*"を指定すると、COUNTIFはA1をcriteria引数のテキストとして扱います。 もちろん、A1に数字が含まれていると、これは失敗します。だからあなたはそれをテストする必要があるかもしれません

=COUNTIF(A1,"<>" &  A1 & IF(ISNUMBER(A1),"","*"))

そして、これがあなたがあなたのコメントに投稿したデータを使ったスクリーンショットです:

enter image description here

使用してから COUNTIF このように完全に防弾ではない、あなたはまた考慮することができる EXACT 関数。

=N(NOT(EXACT(A2,B2)))

大文字と小文字の区別が問題にならない場合もあります。

=A2<>B2

と同じ結果が返されます COUNTIF また、テスト対象の範囲が基準内に表示される可能性を除外することもできます。

enter image description here

私が理解すれば COUNTIFS 上記のコメントで投稿した公式は、以下が同等のものを提供する可能性がありますが、私はあなたの予想される結果とデータを見たいのですが。

=SUMPRODUCT((A:A=A2)*(B:B<>B2))<1

また、列全体の参照を列全体未満に制限することができれば、式ははるかに効率的に(素早く)機能します。


たとえ物が等しくなくても、これは常に0を返すだけのようです。添付画像を見る imgur.com/a/6VSYF
Some_Guy

@Some_Guyもちろんあなたは正しいです。なぜそれがうまくいっていると思ったのかわからない。正しい解決策に編集します。
Ron Rosenfeld

これは優れていますが、使用されているワイルドカードに依存しています。 1つの商品に別の商品が含まれることを保証できる場所はありますが、1つのコード0002345と別のコード0002345Aがある場合、これが問題の原因になります。確かに、以前の状況を改善したものです。
Some_Guy

1
@Some_Guyはい、それは制限になります。それが致命的かどうかはあなたのデータベースに依存します - あなただけがそれを判断することができます。使い慣れていない場合 COUNTIF、他の解決策があります。投稿します。
Ron Rosenfeld
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.