Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Zahlen in Zeichenketten

Das Ermitteln von Zahlen aus Zeichenketten ist nicht immer trivial: Es hngt davon ab, ob etwa nur fhrende Zahlen, die erste oder alle Zahlen einer Zeichenkette ermittelt werden sollen. Dieser Beitrag stellt alle drei Varianten vor.

Fhrende Zahlen ermitteln

Das Ermitteln aller Zahlen bis zum ersten nicht-numerischen Wert ist am einfachsten: Dies erledigt man mit der Val-Funktion. Der Aufruf

Debug.Print Val("123abc")

liefert beispielsweise den folgenden Wert zurck:

123

Allerdings liefert diese Funktion auch einen Zahlenwert zurck, wenn das erste Zeichen keine Zahl ist - nmlich den Wert 0.

Um dies auszuschlieen, gibt es mehrere Mglichkeiten. Am einfachsten geht dies, wenn man einfach mit der IsNumeric-Funktion das erste Zeichen prft. Dazu verwendet man die folgende Funktion:

Public Function FuehrendeZahlen(str As String) As Variant

    If IsNumeric(Left(str, 1)) Then

        FuehrendeZahlen = Val(str)

    End If

End Function

Erste fhrende Zahl ermitteln

Mit der Kenntnis der Val-Funktion ist natrlich auch das Ermitteln der ersten fhrenden Zahl ganz einfach. Die folgende Funktion variiert die vorherige Funktion geringfgig:

Public Function FuehrendeZahl(str As String) As Variant

    If IsNumeric(Left(str, 1)) Then

        FuehrendeZahl = Val(Left(str, 1))

    End If

End Function

Alle enthaltenen Zahlen ermitteln

Wenn man alle numerischen Zeichen innerhalb einer Zeichenkette ermitteln mchte, kommt man nicht um eine Schleife herum, die alle enthaltenen Zeichen durchluft und prft.

Dies kann etwa wie folgt aussehen:

Public Function AlleZahlen(str As String)

    Dim strTemp As String

    Dim strZeichenTemp As String

    Dim i As Integer

    For i = 1 To Len(str)

        strZeichenTemp = Mid(str, i, 1)

        If IsNumeric(strZeichenTemp) Then

            strTemp = strTemp & strZeichenTemp

        End If

    Next i

    AlleZahlen = strTemp

End Function

© 2003-2015 André Minhorst Alle Rechte vorbehalten.