Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlenfolge (telefonnummern) aus Text auslesen

Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 08:22:08
Baedu
Hallo zusammen

Ich habe folgendes Problem.
In Spalte B, in den einzelnen Zellen sind Texte.
In dieses Texten sind bis zu drei verschiedenen Telefonnummern enthalten in unterschiedlicher Schreibweise.

Erkennen möchte ich die Telefonnummern als Zahlenfolge von min 8, max. 16 Zahlen ohne Buchstaben oder Sonderzeichen dazwischen, ausgenommen Leerzeichen.

Dann sollen die erkannten Zahlenfolgen (Telefonnummern) jeweils in die
Spalte C, erste Zahlenfolge,
D zweite Zahlenfolge und
E dritte Zahlenfolge eingefügt werden.

Bisher hatte ich mit VBA versucht, mittels Zeichensuche z.B. « +» oder « 00» und die anschliessenden 16 Zeichen zu kopieren. Das bringt mir jeweils aber nur die letzte Telefonnummer, nicht alle, und ist unzuverlässig.

Wer hat mir eine Idee?

Danke
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
REGEX / AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 08:26:59
tobias
Hallo,

meine Idee dazu ist, eine REGEX-Suche einzubinden.

Gruß,
tobias
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 09:03:20
Fennek
Hallo,

je nach den Texten muss das RegEx.Pattern angepasst werden. In einem Projekt nutze ich diesen Code:


Function Telefon(ByVal Tx As String) As String
'erkennt Telefon-Nr. in Mail.Body
'Test mit: tel 09142-6736

Dim RR As Object
Dim pos As Long, pe As Long

If RegEx Is Nothing Then Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True: RegEx.IgnoreCase = True

RegEx.Pattern = "\bTel.+?0\d{4}[-/(\d]+"

Set RR = RegEx.Execute(Tx)
If RR.Count > 0 Then
Tx = RegEx.Replace(Tx, "")
End If

Telefon = Tx
End Function


Der Text, der auch die Telefon-Nr, enthält, wird der Funktion übergeben, die Rückgabe ist die Telefon-Nr.

Ohne ein Experimentieren wird es vermutlich nicht gehen.

mfg
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 09:14:05
daniel
Hi
kannst du mal bitte ein paar Beispiele zeigen, dh wie liegen die Werte vor, was wünschst du dir als Ergebnis?
am besten durch das Hochladen einer Beispieldatei.
Gruß Daniel
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 09:21:46
MCO
Moin!

Diese function löscht alle Zeichen ausser Zahlen und Leerstellen
Mit textteilen werden anschließend die Nummern auf die Felder aufgeteilt. Kannst du damit was anfangen?


-ABCDE
1Test mit: tel 09142-6736 Test mit: tel 09142-6736 Test mit: tel 09142-6736 Test mit: tel 09142-6736091426736091426736091426736091426736


-ABCDE
1Test mit: tel 09142-6736 Test mit: tel 09142-6736 Test mit: tel 09142-6736 Test mit: tel 09142-6736=TEXTTEILEN(Buchstaben_aus_string_entfernen(A1);" ";;1)



Function Buchstaben_aus_string_entfernen(Optional begriff As String) As String
'Nur Ziffern bleiben bestehen, ASCII 48-57
Dim i As Long
Dim ausgabe1 As String

If begriff = vbNullString Then begriff = ActiveCell.value

For i = 1 To Len(begriff)
If Asc(Mid(begriff, i, 1)) >= 48 And Asc(Mid(begriff, i, 1)) = 57 Or Asc(Mid(begriff, i, 1)) = 32 Then ausgabe1 = ausgabe1 & Mid(begriff, i, 1)
Next i

Buchstaben_aus_string_entfernen = ausgabe1
End Function


Gruß, MCO
Anzeige
Out of Topic....
17.06.2024 17:33:04
Case
Moin, :-)

... im Moment nur neueste Version. Aber eventuell braucht es später mal jemand, der kein VBA einsetzen darf. ;-)

https://www.herber.de/bbs/user/170324.xlsx

Statt der "WECHSEL-Orgie" könnte man auch eine LAMDA-Funktion einsetzen. ;-)

Hier die Infos:
https://support.microsoft.com/en-us/office/regexextract-function-4b96c140-9205-4b6e-9fbe-6aa9e783ff57
https://support.microsoft.com/de-de/office/regexreplace-funktion-9c030bb2-5e47-4efc-bad5-4582d7100897
https://support.microsoft.com/en-us/office/regextest-function-7d38200b-5e5c-4196-b4e6-9bff73afbd31

Servus
Case
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 10:26:44
Fennek
Ein Vorschlag:


Sub sb_Tel()
Dim RegEx As Object, RR As Object
Dim i As Long, r

Set RegEx = CreateObject("VBScript.RegExp")
RegEx.Global = True: RegEx.IgnoreCase = True

RegEx.Pattern = "[\+0]\d{10,13}"
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Set RR = RegEx.Execute(Cells(i, 1))
For r = 0 To RR.Count - 1
Cells(i, 2 + r) = RR(r)
Next r
Next i
End Sub


mfg BAZG
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 11:33:44
Baedu
Hallo Fennek

Deine Lösung mit der Funktion und Formel funktioniert schon gut.
Leider habe ich auch Telefonnummern welche mit Abstand geschrieben sind
+41 79 123 45 78
oder 31 418 11 12 13

Diese scheint es nicht zu erkennen

Danke
Gruss Beat
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 11:37:40
Fennek
ohne Prüfung:

RegEx.Pattern = "[\+0][\s|\d]{10,13}"

\s steht für "white space", also Leerzeichen, das Pipe "|" für oder
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 10:27:09
daniel
Hi
in Excel365 einfach so:

=LET(x;TEXTTEILEN(A2;" ");FILTER(x;(LINKS(x;1)="+")+(LINKS(x;2)="00")))


stimmt deine Versionsangabe mit Excel 2003?

hier würde ich das mit VBA so lösen:

Function Tel(txt as string, Pos as long) as string

dim tt
dim i as long
dim zähler as long
for each tt in split(txt, " ")
if tt like "00*" or tt like "+*" then
Zähler = Zähler + 1
if Zähler = Pos then
Tel = tt
exit function
end if
end if
next
Tel = ""
End Function


in die erste Zelle kommt dann die Formel:
=Tel($a2;Spalte(a$1))
die Formel ziehst du nach unten und nach rechts soweit, wie maximal Telefonnummern vorkommen können.

Gruß Daniel
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 11:15:13
Baedu
Hallo Daniel

1: habe die völlig falsche Excel Version angegeben. Entschuldigung
Richtig: Microsoft Office LTSC Plus 2021

2 Würde VBA Lösung bevorzugen
Deine Lösung mit der Funktion und Formel =Tel($a2;Spalte(a$1)) funktioniert schon gut.
Leider habe ich auch Telefonnummern welche mit Abstand geschrieben sind
+41 79 123 45 78
oder 31 418 11 12 13

diese scheint es nicht zu erkennen

Vielen Dank

Gruss Beat

Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 11:56:32
daniel
nee, erkennt er auch nicht. Das Leerzeichen trennt die Textteile.
wenn man jetzt noch suchen muss, wo die Telefonnummer tatsächlich zu ende ist, wird des kompliziert
stellt sich die Frage, warum dieser Fall in deinen Beispieldaten nicht vorhanden ist.

Bitte erstelle eine neue Beispieldatei, die alle Varianten, wie Telefonnummern dargestellt werden können (manchmal sind ja auch Klammern um die Vorwahl oder Bindestriche mitten drin), enthält.

Weiterhin solltet du dir überlegen, wie du diese Aufgabe einem Mitarbeiter, der zwar präzise und zuverlässig nach Anleitung arbeiten kann, aber ansonsten strunzdumm ist und alles wortwörtlich versteht, beschreiben würdest, wenn ihr die Liste von Hand bearbeiten müsst.
da der Computer genau so ein Kollege ist, (schnell, präzise, wiedhohlgenau, benötigt aber exakte Anweisung), ist diese Überlegung immer der erste Schritt für eine Computerlösung.

Gruß Daniel
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 13:34:04
Baedu
Hallo Daniel
Du hast absolut Recht mit Deinen Bemerkungen und Hinweisen

Ich hatte in meiner Quelldatei nicht genug nach unten gescrollt um weitere Schreibweisen zu entdecken. Dadurch war die Musterdatei nicht vollständig und ebenso meine Erklärungen ungenügend.

Ich habe bei mir folgende Schreibweisen angetroffen

0041 79 712 21 50
0041797122150
+41 79 712 21 50
+41797122150
41 79 712 21 50
41797122150
0041 (0)79 712 21 50
0041(0)797122150

In allen Kombinationen..

• Vorwahl als + oder 00 oder eben gar nicht.
• Dann mit Abstand /Abständen an unterschiedlichster Stelle
• Kein Abstand
• Mit Klammer

Den Schrägstrich habe ich bisher nicht angetroffen, bedeutet aber nicht, dass er nicht vor-kommen könnte. Daher als mögliche Schreibweise auch aufgenommen.

Die Resultate in den Spalten B, C und D dürfen mit oder ohne Leerschläge sein.
Ebenso spielt es keine Rolle, ob mit führenden Plus «+» oder führenden Doppelnull »00»

Danke für Deine Hinweise und Unterstützung

https://www.herber.de/bbs/user/170313.xlsx

Gruss Beat
Anzeige
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
Anzeige
AW: Zahlenfolge (telefonnummern) aus Text auslesen
17.06.2024 14:43:59
Baedu
Hallo Daniel
Super. das ist die gesuchte Lösung

Vielen Dank

Gruss Beat
Ansonsten REGEX-Pattern
18.06.2024 10:19:18
tobias
Hallo Beat,

falls REGEX nochmal gewünscht sein sollte, wäre dieses Pattern

(?:\+|\(|\d)[\d \-\(\)]{4,18}[\d]


geeignet, auf Basis Deiner Beispiele alle Telefonnummern zu erkennen.

Grüße,
tobias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige