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:
- Eine Ziffernfolge ist eine Ganzzahl ohne Dezimal-Anteil.
- Wenn mehrere Ziffernfolgen dieser Länge in der Zelle enthalten sind, dann soll die erste zurück gegeben werden.
- Ist die Ziffernfolge in der Zelle länger als die vorgegebene Länge, dann werden die ersten n Ziffern zurück gegeben.
- Ist die gewünschte Ziffernfolge nicht in der Zelle enthalten, dann wird 0 als Ergebnis zurück gegeben.
- Ist die vorgegebene Länge < 1, dann wird die Fehlermeldung #WERT! zurück gegeben.
- 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.
Rückmeldungen / Feedback 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 Ihrerseits z.B. 1,00 € freuen … (← Klick mich!)