Integer-Zahl aus String extrahieren

Eine Ganzzahl (ohne Nachkommastellen)
aus einer Zeichenkette extrahieren

Mit den fol­gen­den Funk­tio­nen wer­den Ganz­zahlen aus einem String extrahiert. Ist keine Zahl im String enthal­ten, wird "" (Leer­String) zurück gegeben. Die namen der Funk­tio­nen sind selb­st erk­lärend. Wie Sie eine Funk­tion in Ihre Mappe ein­binden, kön­nen Sie hier in unserem Blog nach­le­sen.

Function intZahlVonLinks(str As String) As Variant
   Dim i As Integer, ZahlGefunden As Boolean
   For i = 1 To Len(str)
      If Not IsNumeric(Mid(str, i, 1)) Then Exit For
   Next i
   If i = 1 And Not IsNumeric(Left(str, 1)) Then
      intZahlVonLinks = ""
   Else
      intZahlVonLinks = CLng(Left(str, i - 1))
   End If
End Function
'----------------------------------------------------------
Function intZahlVonRechts(str As String) As Variant
   Dim i As Integer, ZahlGefunden As Boolean
   For i = Len(str) To 1 Step -1
      If Not IsNumeric(Mid(str, i, 1)) Then Exit For
   Next i
   If i = Len(str) And Not IsNumeric(Right(str, 1)) Then
      intZahlVonRechts = ""
   Else
      intZahlVonRechts = CLng(Mid(str, i + 1, 999))
   End If
End Function
'----------------------------------------------------------
Function intZahlMittig(str As String) As Variant
   Dim i As Integer, k As Integer, ZahlGefunden As Boolean
   For i = 1 To Len(str)
      If IsNumeric(Mid(str, i, 1)) Then
         ZahlGefunden = True
         Exit For
      End If
   Next i
   For k = i To Len(str)
      If Not IsNumeric(Mid(str, k, 1)) Then Exit For
   Next k
   If ZahlGefunden Then
      intZahlMittig = CLng(Mid(str, i, k - i))
   Else
      intZahlMittig = ""
   End If
End Function

… und ja, es geht auch kürz­er und etwa schneller. Aber dieser Code ist ein­fach bess­er les­bar und auch leichter anpass­bar als beispiel­sweise RegEx-For­mulierun­gen. 😉

[NachOben­Let­zte Verweis=„CS: Inte­gerZahl extrahieren”]
Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Rechnen & Zahlen, Suchen und finden abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.