Prüfen ob Inhalt eine Zahl ist... Falls NEIN... konvertiere in Zahl

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ereza.

    Prüfen ob Inhalt eine Zahl ist... Falls NEIN... konvertiere in Zahl

    Liebe Community,

    Hätte eine kurze Frage...

    Ich würde gerne eine Routine schreiben, wo Excel den Inhalt einer Zelle überprüft ob der Inhalt als Text oder als Zahl vorkommt.

    Wenn der Inhalt als Text vorkommt, soll der Inhalt als Zahl formatiert werden.
    Wenn der Inhalt bereits eine Zahl ist, soll Excel gar nix machen...

    das ganze soll von der 2.ten Zeile bis zum Zeilen Ende laufen...


    Wie könnte man das umsetzen??

    Mein Code wäre der hier... für Spalte A z.b.:

    Visual Basic-Quellcode

    1. Dim r As Long
    2. For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    3. If Cells(r, 1).Value = Text Then
    4. Cells(r, 1) = CDbl(Cells(r, 1))
    5. Cells(r, 1).NumberFormat = "General"
    6. End If
    7. Next


    Ich glaube so müsste es hinhauen von der Struktur her... aber... könnt mir mir grad kurz helfen... was ich da richtiger Weise hinschreiben muss für
    IF Cells(r, 1).Value = Text THEN
    ?? also... ich möchte sagen... WENN der Inhalt der Zelle(r,1) als Text erkannt wird DANN SOLL... etc.
    ELSE wenn der Inhalt bereits als Zahl erkannt wird, soll er nix tun....

    Kann mir grad jemand schnell bei der Synthax helfen??

    Vielen DANK!!

    LG Tim

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ereza“ ()

    Hallo Neptun!

    Super Vielen Dank fürn Tipp...

    Meinst du, dass mein Code dann so funktioniert?:

    Visual Basic-Quellcode

    1. Dim r As Long
    2. Dim x As Boolean
    3. For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    4. x = IsNumeric(Cells(r, 1))
    5. If x = False Then
    6. Cells(r, 1) = CDbl(Cells(r, 1))
    7. Cells(r, 1).NumberFormat = "General"
    8. End If
    9. Next


    Geht das?

    LG Tim



    NACHTRAG:


    hab das gerade ausprobiert... Kann es sein... dass ISNUMERIC nicht korrekt arbeitet???

    weil... bei mir erkennt der das nicht!!!

    Somit...

    gibt's eine andere Möglichkeit zu prüfen ob der Inhalt eine Zahl ist??

    Weil ich habe eigentlich folgendes Problem...

    Es stehen Werte in Zellen und dann gibt's da diesen Hinweis mit Rufezeichen (also Fehler) --> "Als Text gespeicherte Zahlen" und dann "in Zahl umwandeln...."

    Also ich möchte eigentlich dass die Routine genau das prüft und im Falle, dass es sich um so ein "Fehlerfeld" handelt, die Routine mir das in eine Zahl konvertiert!!

    aber ISNUMERIC scheint da nicht zu gehen! :((

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ereza“ ()

    Wenn du dir sicher bist, dass in der Zelle eine Nummer stehen sollte:
    ​Cells(r, 1).Value = Val(Cells(r, 1).Value)

    Wenn IsNumeric nicht hinhaut, kann es auch daran liegen, dass in der Zelle eine Decimal-Separator drin steht, der nicht deinen Regionaleinstellungen entspricht (Punkt statt Komma o.ä.).
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    ja, Excel soll überprüfen ob in der Zelle eine Nummer bzw. Zahl steht, falls JA soll nix passieren...

    FALLS aber eine, als Text dastehende Zahl, drinnen steht (dann hat die Zelle dieses Rufezeichen wo dann eben da steht, als Text gespeicherte Zahl....) DANN soll die Routine diesen Inhalt in eine Zahl umwandeln...

    Aber wenn ich nun die IF-Bedinung adaptiere:

    Visual Basic-Quellcode

    1. Private Sub CommandButton1_Click()
    2. Dim r As Long
    3. For r = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    4. If Cells(r, 1).Value = Val(Cells(r, 1).Value) Then
    5. Cells(r, 1) = CDbl(Cells(r, 1))
    6. Cells(r, 1).NumberFormat = "General"
    7. Else
    8. End If
    9. Next
    10. End Sub


    geht es nicht wirklich...

    und ich müsste ja dann somit verneinen also.. <> statt = verwenden für die Bedinung oder verstehe ich das jetzt falsch?
    Wenn das nicht funktioniert

    Visual Basic-Quellcode

    1. If Isnumeric(Cells(r, 1).Value) Then
    2. Cells(r, 1).NumberFormat = "General"
    3. Cells(r, 1).Value = Val(Cells(r, 1).Value)
    4. End If
    Dann gib mal ein Beispiel, was in deinen Zellen drin steht und nicht konvertiert wird.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    also... ich habe jz folgende Lösung... (hab deine ein wenig adaptiert...):

    Visual Basic-Quellcode

    1. Dim x As Long
    2. For x = 2 To Cells(Rows.Count, 11).End(xlUp).Row
    3. If Cells(x, 60).Value <> Val(Cells(x, 60).Value) Then
    4. Cells(x, 60) = CDbl(Cells(x, 60))
    5. Cells(x, 60).NumberFormat = "General"
    6. Else
    7. End If
    8. Next


    Und das funktioniert jz einwandfrei...! Ich weiß auch nicht warum das mit Isnumeric nicht genau geklappt hat... denn als Wert in der Zelle steht ja nicht mal ein Hochkomma... also: '123 sondern 123 --> trotzdem zeigt er bei manchen Einträgen solcher Art den Fehler an und bietet die Möglichkeit den "Text-Inhalt" in eine Zahl zu konvertieren....

    Weiß ehrlich gesagt auch nicht, warum das bei manchen Zellen, in der gleichen Spalte wohl bemerkt!!, so ist und in anderen dann wieder nicht...

    ABER deine Lösung mit
    Cells(x, 60).Value <> Val(Cells(x, 60).Value)
    haut super hin...!

    DANKE!!