AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 14:15:10
daniel
Hi
dann probier mal diese Function
Function tel(txt As String, pos As Long, Optional Mindestlänge As Long = 8) As String
Dim x
Dim i As Long
Dim txt2 As String
Dim chk As Long
Dim Zähler As Long
'-überflüssige Zeichen raus
For Each x In Array("(", ")", " ", "-", "/", "+")
txt = Replace(txt, x, "")
Next
'-trennzeichen vor und nach Ziffernblock
txt2 = IIf(Left(txt, 1) Like "#", "|" & Left(txt, 1), Left(txt, 1))
For i = 2 To Len(txt)
chk = (Mid(txt, i - 1, 1) Like "#") + (Mid(txt, i, 1) Like "#")
If chk = -1 Then txt2 = txt2 & "|"
txt2 = txt2 & Mid(txt, i, 1)
Next
'-Zifferblöcke auf Länge prüfen (Telefonnummer) und ausgeben
x = Split(txt2, "|")
For i = 1 To UBound(x) Step 2
If Len(x(i)) >= Mindestlänge Then
Zähler = Zähler + 1
If Zähler = pos Then
tel = x(i)
Exit Function
End If
End If
Next
tel = ""
End Function
die funktioniert so:
zuerst werden alle Klammern, Bindestriche und Leerzeichen aus dem Text entfernt.
dann wird überall, wo ein Wechsel zwischen Ziffer und Text stattfindet, ein Trennzeichen eingefügt, so dass jede vor und nach jedem Zahlenblock ein Trennzeichen steht.
dann wird der Text gesplittet und die Länge der Zählenblöcke bestimmt.
Alles was 8 Ziffern oder mehr in Folge hat, wird als Telefonnummer ausgegeben.
du kannst die Länge, die für die Erkennung als Telefonnummer erforderlich ist, auch in der Formel bestimmen ohne in den Code einzugreifen, in dem du die Mindestlänge als dritten Parameter angibst (ohne Angabe gilt dann der Funktionskopf angegebene Wert):
=Tel($A2;Spalte(A$1);10)
Gruß Daniel