web-dev-qa-db-ja.com

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

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

私が見つけたのは、ISNUMBER()関数が機能するのは、セルが数値形式である場合、またはテキスト形式の場合スペースなしがある場合のみです。

number as text examples

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

VBAを使用しない唯一の方法は、テキストを列に使用して現在の値を上書きしてから、=ISNUMBER()関数を使用することです。

注: VBAおよびExcelに精通しており、ユーザー定義関数を作成できることを理解しています。ただし、これにより、インストールが必要なマクロブックまたはアドインが必要になる場合があるため、インストールしたくない場合があります。

アドバイス、考え(できないと言われたとしても)、またはVBAソリューション(回答としてマークされません)をいただければ幸いです。

13
glh

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

=IsNumber(Trim(A1)*1)

30
David Zemens

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

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

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

5
Sam Plus Plus

最短私の質問に対する答えは次のとおりです。

=N(-A1)

ありがとうbrettdj

3
glh

私はこの投稿が古いことを知っていますが、この場合に非常に便利であることがわかりました。この場合、数式は(333)を返しましたが、ISNUMBERはそれが数値であると答えました。数字以外の文字。以下は私のために働いた。

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

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

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

David Zemensが述べたように

=IsNumber(Trim(A1)*1)

動作しますが、「-」がある場合、または数値が括弧内にある場合は、数値であることを示します。

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

2
Mouthpear

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

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

小数と負の結果FALSE

0
robotik