Überprüfen Sie anhand der Formel, ob der Excel-Zellentext numerisch ist

13

Ich muss herausfinden, ob mein Zellentext ein numerischer Wert ist, und wollte eine elegante Nicht-VBA- Methode verwenden, die den aktuellen Status oder Wert nicht beeinträchtigt.

Was ich gefunden habe ist, dass die ISNUMBER()Funktion nur funktioniert, wenn die Zellen Zahlenformatierung sind oder keine Leerzeichen haben, wenn Textformatierung zB:

Nummer als Textbeispiel

Für die ersten drei habe ich verwendet =ISNUMBER(...)und mein letzter Versuch ist =ISNUMBER(TRIM(...)).

Die einzige Methode, die ich ohne VBA verwendet habe, besteht darin, meine aktuellen Werte mithilfe von Text in Spalten zu überschreiben und dann die =ISNUMBER()Funktion zu verwenden.

Hinweis: Ich beherrsche VBA und Excel und verstehe, dass ich eine benutzerdefinierte Funktion erstellen kann. Aber ich möchte nicht, da dies die Installation einer für ein Makro erforderlichen Arbeitsmappe oder eines Add-Ins erfordert, was ich in einigen Fällen tun kann und getan habe.

Ich freue mich über Ratschläge, Gedanken (auch wenn sie mir mitteilen, dass dies nicht möglich ist) oder VBA-Lösungen (die jedoch nicht als Antwort gekennzeichnet sind).

glh
quelle
4
Eine Alternative zu FWIW ISNUMBERist die selten verwendete N. So etwas wie das=NOT(ISERR(N(--A1)))
brettdj
1
@brettdj danke dafür! Für eine Antwort, die die geringste Anzahl von Zeichen verwendet und schnell und schmutzig ist, habe ich jetzt =N(-A1). Wusste auch nicht, dass es das gibt.
glh
Was ist der Zweck der Bindestriche vor dem Zellbezug? Und warum haben Sie jeweils eine andere Anzahl von Bindestrichen?
youcantryreachingme

Antworten:

30

Versuchen Sie, den Zellenwert mit 1 zu multiplizieren, und führen Sie dann die Funktionen IsNumberund Trimaus, z.

=IsNumber(Trim(A1)*1)

David Zemens
quelle
2
+1 für Geschwindigkeit und eine gute Antwort. Es ist scheiße, wenn die Dinge in deinem Gesicht stimmen, aber du siehst sie nicht!
Glh
1
Ich habe auch herausgefunden, dass Sie nicht einmal verwenden müssen trim. Schöne Grüße.
Glh
2
@glh manchmal braucht es nur ein paar andere Augen, um zu sehen, was direkt vor dir ist. :)
David Zemens
5

Angenommen, der Wert, den Sie konvertieren möchten, ist in A1, können Sie die folgende Formel verwenden:

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

Hier entfernen die Funktionen Bereinigen und Trimmen Leerzeichen und keine druckbaren Zeichen. Der Funktionswert konvertiert eine Zeichenfolge in eine Zahl, und mit der konvertierten Zeichenfolge können wir überprüfen, ob der Wert eine Zahl ist.

Sam Plus Plus
quelle
3
+1. Als schnell und dreckig mag ich es, =VALUE(A1)da meine Daten nicht die Notwendigkeit dafür haben CLEAN(). Ich wusste nicht, dass die VALUE()Funktion existiert. Nur um zu bemerken, das TRIM()nichts geht, da Leerzeichen sowieso ignoriert werden.
glh
3

Die kürzeste Antwort auf meine Frage lautet:

=N(-A1)

Danke brettdj

glh
quelle
2

Ich weiß, dass dieser Beitrag alt ist, aber ich fand das in diesem Fall sehr nützlich. Ich hatte eine Formel, die zurückgegeben wurde (333), obwohl es sich um eine Zahl handelt und ISNUMBER sagt, dass es sich um eine Zahl handelt, obwohl ich keine Antwort wollte, wenn dies der Fall war andere Zeichen als Ziffern. Folgendes hat bei mir funktioniert.

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

Es funktioniert, wenn es keine anderen Zeichen als Ziffern gibt. Wenn Sie nur ein wahres falsches wünschen, lassen Sie das IF fallen

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

Wie David Zemens feststellte

=IsNumber(Trim(A1)*1)

Funktioniert aber wenn es ein "-" gibt oder die Nummer in Klammern steht, wird es als Zahl angezeigt.

Ich hoffe das hilft dir oder anderen.

Mundbirne
quelle
0

Wenn jemand Zellen filtern muss, die etwas enthalten, das nicht numerisch ist:

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

Dezimalstellen und Negative ergeben sich FALSE

Robotik
quelle