Automatisches umformatieren von Nummern im Excel
Hallo Leute!
Ich bin mal wieder am Ende mit meinen "Excel - Kenntnissen".
Das Ziel ist es, alle Nummern einer Excel-Kontakt-Liste umzuformatieren und das Automatisch.
Also von:
+49 8762 33345
auf:
+49 (8762) 33345
oder von
+49 08762 33345
auf:
+49 (8762) 33345
Danke schon mal im voraus!
Mit freundlichen Grüßen,
eure ExcelOpfer
Ich bin mal wieder am Ende mit meinen "Excel - Kenntnissen".
Das Ziel ist es, alle Nummern einer Excel-Kontakt-Liste umzuformatieren und das Automatisch.
Also von:
+49 8762 33345
auf:
+49 (8762) 33345
oder von
+49 08762 33345
auf:
+49 (8762) 33345
Danke schon mal im voraus!
Mit freundlichen Grüßen,
eure ExcelOpfer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278065
Url: https://administrator.de/contentid/278065
Ausgedruckt am: 16.11.2024 um 19:11 Uhr
14 Kommentare
Neuester Kommentar
Sind das nur die zwei Varianten von Nummern die auftauchen können oder noch mehr? Denn wenn es mehr sind (wie du im verlinkten Beitrag sehen konntest ) wird die Formel sehr sehr sehr sehr sehr lang ... Ohne Regular Expressions wird das dann ein Monster von Formel, das du mit deinen Kenntnissen bestimmt nicht mehr handeln kannst.
Ich würde das lieber mit Makros machen.
Enthält natürlich jetzt noch nicht alle möglichen Varianten, aber das lässt sich halt viel einfacher erweitern, wenn man Regular Expressions beherrscht.
=LINKS(A1;FINDEN(" ";A1)-1)&" ("&WENN(LINKS(TEIL(A1;FINDEN(" ";A1)+1;FINDEN(" ";A1;5)-5);1)="0";TEIL(TEIL(A1;FINDEN(" ";A1)+1;FINDEN(" ";A1;5)-5);2;10);TEIL(A1;FINDEN(" ";A1)+1;FINDEN(" ";A1;5)-5))&") "&TEIL(A1;FINDEN(" ";A1;5)+1;20)
Ich würde das lieber mit Makros machen.
Sub CorrectNumbers()
Set regex = CreateObject("vbscript.regexp")
IgnoreCase = True
regex.Pattern = "^\+?(00)?(\d+)\s*\(?0?(\d{2,4}|\d{2,4})\)?\s*(\d+)"
With ActiveSheet
For Each cell In .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
Set matches = regex.Execute(cell.Value)
If matches.Count > 0 Then
cell.Offset(0, 1).Value = regex.Replace(cell.Value, "+$2 ($3) $4")
Else
cell.Offset(0, 1).Value = cell.Value
End If
Next
End With
Set regex = Nothing
End Sub
Ahm ja es kommen noch 4 andere Typen von Nummern daher!
Na dann viel Spaß beim Formelpuzzle ;-PZitat von @ExcelOpfer:
Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
Steht doch schon oben ...Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
Nur für den ursprünglichen Umfang deines Posts, für die anderen muss ich den Regex noch anpassen, kann aber was dauern muss gerade 10 Sachen gleichzeitig machen
Du solltest aber beachten das für das ermitteln der Länge einer Vorwahl aus dem Ausland schon wesentlich mehr nötig ist, das alles müsste man beachten, ist also nicht ganz so leicht wie du dir das vorstellst !
für die obigen Nummern hab ich den Regex noch erweitert (s.u), aber wie gesagt man müsste von allen Ländern die Vorwahlen haben um das wirklich 100% korrekt abzubilden.
Die Länge der Vorwahl ist im Regex an Deutschland angepasst, d.h. eine Vorwahl in Deutschland hat inkl. 0 max. 7 Stellen.
Du siehst so einfach ist das nicht.
für die obigen Nummern hab ich den Regex noch erweitert (s.u), aber wie gesagt man müsste von allen Ländern die Vorwahlen haben um das wirklich 100% korrekt abzubilden.
regex.Pattern = "\+?(00)?(\d{2})\s*\(?0?(\d{2,6}|\d{3,7})\)?\s*([\d+ ]*)"
Du siehst so einfach ist das nicht.
Es wäre wichtig, dass gleich alles klappt
Gegen Cash, gerne...
Und für die Länder soll ich jetzt alle Seiten der Regulierungsbehörden für die Länge der Vorwahlen abklappern oder was, und das für Lau ? Nö.
Vielleicht erbarmt sich ja jemand anders.
Bis denn dann.
Gruß jodel32
Vielleicht erbarmt sich ja jemand anders.
Bis denn dann.
Gruß jodel32