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
Please also mark the comments that contributed to the solution of the article
Content-Key: 278065
Url: https://administrator.de/contentid/278065
Printed on: April 24, 2024 at 07:04 o'clock
14 Comments
Latest comment
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