Ziffernfolge bestimmter Länge extrahieren

In einer beliebigen Zelle steht ein Text, welcher eine Ziffernfolge enthält. Es soll das erste Vorkommen dieser nicht definierten Ziffernfolge als Resultat einer Funktion wiedergegeben werden. Folgende Nebenbedingungen sind gegeben:

  1. Eine Ziffernfolge ist eine Ganzzahl ohne Dezimal-Anteil.
  2. Wenn mehrere Ziffernfolgen dieser Länge in der Zelle enthalten sind, dann soll die erste zurück gegeben werden.
  3. Ist die Ziffernfolge in der Zelle länger als die vorgegebene Länge, dann werden die ersten n Ziffern zurück gegeben.
  4. Ist die gewünschte Ziffernfolge nicht in der Zelle enthalten, dann wird 0 als Ergebnis zurück gegeben.
  5. Ist die vorgegebene Länge < 1, dann wird die Fehlermeldung #WERT! zurück gegeben.
  6. Es wird ein Zahlwert, kein Text zurück gegeben.

Zu Punkt 4: Bei Bedarf kann noch eine Fehlermeldung integriert werden.

Dieser Code ist zielführend:

Option Explicit

Function ZahlExtrakt(Zelle As Range, Anz As Integer)
   Dim i As Integer, c As String
   If Zelle.Cells.Count > 1 Then
      MsgBox "Es darf nur 1 Zelle als Quelle angegeben werden!", vbCritical, _
         "Fehler in der Bereichs-Angabe"
      ZahlExtrakt = ""
      Exit Function
   End If
   c = Zelle.Value
   If Len(c) < Anz Then
      MsgBox "Die Länge des Textes in Zelle " & Zelle.Address(0, 0) & _
         " unterschritet die angegebene Zahl von Stellen für die Ziffern!", vbCritical, _
         "Abbruch, neu eingeben!"
      ZahlExtrakt = ""
      Exit Function
   End If
   For i = 1 To Len(c) - Anz
      If Mid(c, i, Anz) Like WorksheetFunction.Rept("#", Anz) Then
         ZahlExtrakt = Mid(c, i, Anz)
         Exit Function
      End If
   Next i
End Function

Diese Funktion erfordert zwei Argumente: Zelle ist die Zelle, aus welcher die Ziffernfolge extrahiert werden soll. Anz ist ein ganzzahliger Wert der Anzahl von Ziffern, die extrahiert werden sollen. – Hinweise, wie Sie eine Funktion (wie diese) einbinden können, lesen Sie hier im Blog nach.

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Rechnen & Zahlen abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.