数式のみを使用して、Excelのセルテキストが数値かどうかを確認します


13

セルのテキストが数値であるかどうかを確認する必要があり、現在の状態や値を妨げないエレガントな非VBAメソッドを使用したかったのです。

私が見つけたのはISNUMBER()、セルが数値フォーマットである場合にのみ機能するか、テキストフォーマットの場合はスペースないことです

テキスト例としての番号

私が使用した最初の3つについては=ISNUMBER(...)、私の最後の試みは=ISNUMBER(TRIM(...))です。

VBAを使用しない私が使用した唯一の方法は、テキストを列に使用して現在の値をオーバーライドし、=ISNUMBER()関数を使用することです。

注:私はVBAとExcelに習熟しており、ユーザー定義関数を作成できることを理解しています。しかし、これはマクロが必要なワークブックまたはアドインをインストールすることを強いるので、したくありません。

VBAソリューション(ただし、回答としてマークされません)、アドバイス、考え(それができないと言っても)に感謝します。


4
FWIWの代替ISNUMBERはめったに使用されませんN。このようなもの=NOT(ISERR(N(--A1)))
-brettdj

1
@brettdjありがとうございます!最も少ない数の文字を使用し、迅速で汚れた回答については、私は今持ってい=N(-A1)ます。それが存在することも知りませんでした。
glh

セル参照の前にあるハイフンの目的は何ですか?そして、なぜあなたはそれぞれ異なる数のハイフンを持っていますか?
youcantryreachingme

回答:


30

セルの値に1を掛けてからIsNumberTrim関数と関数を実行してみてください。例:

=IsNumber(Trim(A1)*1)


2
スピードと優れたアンサーのために+1。物事があなたの顔の中に正しいとき、それはうんざりしますが、あなたはそれらを見ることができません!
glh

1
また、私はあなたが使用する必要さえないことを知りましたtrim。よろしく。
-glh

2
@glhは、yaの前に何があるのか​​を見るために別の目が必要になることもあります。:)
デビッドゼメンス

5

変換する値がA1にあると仮定すると、次の式を使用できます。

=ISNUMBER(VALUE(TRIM(CLEAN(A1)))

ここで、関数cleanおよびtrimは、空白を削除し、印刷可能な文字を削除していません。関数値は文字列を数値に変換し、変換された文字列を使用して、値が数値であるかどうかを確認できます。


3
+1。=VALUE(A1)私のデータには必要がないので、早くて汚いのが好きですCLEAN()VALUE()機能が存在することを知りませんでした。TRIM()とにかくスペースが無視されるため、何もしないことに注意してください。
-glh

3

最短私は私の質問に持っている答えは:

=N(-A1)

ありがとうbrettdj


2

私はこの投稿が古いことを知っていますが、この場合非常に便利であることがわかりました数字以外の文字。次は私のために働いた。

=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")

数字以外の文字がある場合に機能します。真の偽のドロップだけが必要な場合は、IF

=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))

デビッド・ゼメンスが述べたように

=IsNumber(Trim(A1)*1)

動作しますが、「-」がある場合、または数字が括弧内にある場合、数字であると表示されます。

これがあなたや他の人に役立つことを願っています。


0

数値ではないものを含むセルをフィルタリングする必要がある場合:

=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")

小数と負の結果 FALSE

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.