Ziffernfolge bestimmter Länge extrahieren

In ein­er beliebi­gen Zelle ste­ht ein Text, welch­er eine Zif­fer­n­folge enthält. Es soll das erste Vorkom­men dieser nicht definierten Zif­fer­n­folge als Resul­tat ein­er Funk­tion wiedergegeben wer­den. Fol­gende Nebenbe­din­gun­gen sind gegeben:

  1. Eine Zif­fer­n­folge ist eine Ganz­zahl ohne Dez­i­mal-Anteil.
  2. Wenn mehrere Zif­fer­n­fol­gen dieser Länge in der Zelle enthal­ten sind, dann soll die erste zurück gegeben wer­den.
  3. Ist die Zif­fer­n­folge in der Zelle länger als die vorgegebene Länge, dann wer­den die ersten n Zif­fern zurück gegeben.
  4. Ist die gewün­schte Zif­fer­n­folge nicht in der Zelle enthal­ten, dann wird 0 als Ergeb­nis zurück gegeben.
  5. Ist die vorgegebene Länge < 1, dann wird die Fehler­mel­dung #WERT! zurück gegeben.
  6. Es wird ein Zahlw­ert, kein Text zurück gegeben.

Zu Punkt 4: Bei Bedarf kann noch eine Fehler­mel­dung inte­gri­ert wer­den.

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 Funk­tion erfordert zwei Argu­mente: Zelle ist die Zelle, aus welch­er die Zif­fer­n­folge extrahiert wer­den soll. Anz ist ein ganz­zahliger Wert der Anzahl von Zif­fern, die extrahiert wer­den sollen. – Hin­weise, wie Sie eine Funk­tion (wie diese) ein­binden kön­nen, lesen Sie hier im Blog nach.

▲ nach oben …

Rück­mel­dun­gen / Feed­back gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 1,00  freuen … (← Klick mich!)

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