excelopfer
Goto Top

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

Content-ID: 278065

Url: https://administrator.de/contentid/278065

Ausgedruckt am: 16.11.2024 um 19:11 Uhr

114757
114757 22.07.2015 um 16:11:47 Uhr
Goto Top
ExcelOpfer
ExcelOpfer 22.07.2015 um 16:21:20 Uhr
Goto Top
Leider hat der Admin bei uns die Macros deaktiviert....
müsste das ganze über eine Formel lösen
114757
114757 22.07.2015 aktualisiert um 18:13:50 Uhr
Goto Top
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 face-wink) 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.
=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
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.
ExcelOpfer
ExcelOpfer 23.07.2015 um 07:12:58 Uhr
Goto Top
Danke für die rasche Antwort!

Ahm ja es kommen noch 4 andere Typen von Nummern daher!
zb.: 0043 4852 36515
oder: 004365219854
oder: +436645259511
oder: +43662 5415 9921
114757
114757 23.07.2015 aktualisiert um 10:30:19 Uhr
Goto Top
Ahm ja es kommen noch 4 andere Typen von Nummern daher!
Na dann viel Spaß beim Formelpuzzle ;-P
ExcelOpfer
ExcelOpfer 23.07.2015 um 13:17:29 Uhr
Goto Top
Sooo :D
Die Makros wurden aktiviert face-smile

Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
114757
114757 23.07.2015 um 13:20:45 Uhr
Goto Top
Zitat von @ExcelOpfer:
Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
Steht doch schon oben ...
ExcelOpfer
ExcelOpfer 23.07.2015 um 13:21:57 Uhr
Goto Top
reicht das für jeden Typ der Nummern?
114757
114757 23.07.2015 um 13:24:53 Uhr
Goto Top
Zitat von @ExcelOpfer:

reicht das für jeden Typ der Nummern?
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 face-wink
114757
114757 23.07.2015 aktualisiert um 13:36:31 Uhr
Goto Top
Zitat von @ExcelOpfer:

reicht das für jeden Typ der Nummern?
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.
regex.Pattern = "\+?(00)?(\d{2})\s*\(?0?(\d{2,6}|\d{3,7})\)?\s*([\d+ ]*)"
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.
ExcelOpfer
ExcelOpfer 23.07.2015 um 13:36:14 Uhr
Goto Top
Es wäre wichtig, dass gleich alles klappt

Ich weiß welche Vorwahlen das vorkommen!
Ich schreib mir noch schnell alle Vorwahlen raus!
114757
114757 23.07.2015 um 13:37:04 Uhr
Goto Top
Es wäre wichtig, dass gleich alles klappt
Gegen Cash, gerne...
ExcelOpfer
ExcelOpfer 23.07.2015 um 13:50:35 Uhr
Goto Top
Das gleich hab ich unbewusst geschrieben hahahahahaha

Also es kommen vor:
Österreich / Austria +43
Deutschland / Germany +49
Frankreich / France +33
Polen / Poland +48
Kroatien / Croatia +385
Griechenland / Greece +30
Schweiz / Switzerland +41
USA +1
Parkistan +92

Möglicherweise wichtige Daten:
Das jeweilige Land steht in Spalte O
Die Fax Nummer in AE
Die Telefonnummer in AF
Die Mobiltelefonnummer in AO

bei Ländern mit 2 Bezeichnungen werden diese abwechselnd in der Länderspalte benutzt..

Es wäre sehr nett von dir wenn du das für mich schreiben könntest.

MfG
114757
114757 23.07.2015 aktualisiert um 13:54:32 Uhr
Goto Top
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