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-Key: 278065

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

Printed on: April 24, 2024 at 07:04 o'clock

Mitglied: 114757
114757 Jul 22, 2015 at 14:11:47 (UTC)
Goto Top
Member: ExcelOpfer
ExcelOpfer Jul 22, 2015 at 14:21:20 (UTC)
Goto Top
Leider hat der Admin bei uns die Macros deaktiviert....
müsste das ganze über eine Formel lösen
Mitglied: 114757
114757 Jul 22, 2015 updated at 16:13:50 (UTC)
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.
Member: ExcelOpfer
ExcelOpfer Jul 23, 2015 at 05:12:58 (UTC)
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
Mitglied: 114757
114757 Jul 23, 2015 updated at 08:30:19 (UTC)
Goto Top
Ahm ja es kommen noch 4 andere Typen von Nummern daher!
Na dann viel Spaß beim Formelpuzzle ;-P
Member: ExcelOpfer
ExcelOpfer Jul 23, 2015 at 11:17:29 (UTC)
Goto Top
Sooo :D
Die Makros wurden aktiviert face-smile

Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
Mitglied: 114757
114757 Jul 23, 2015 at 11:20:45 (UTC)
Goto Top
Zitat von @ExcelOpfer:
Was muss genau in diesem makro stehen?
Bzw kannst du mir diesen bitte schreiben?
Steht doch schon oben ...
Member: ExcelOpfer
ExcelOpfer Jul 23, 2015 at 11:21:57 (UTC)
Goto Top
reicht das für jeden Typ der Nummern?
Mitglied: 114757
114757 Jul 23, 2015 at 11:24:53 (UTC)
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
Mitglied: 114757
114757 Jul 23, 2015 updated at 11:36:31 (UTC)
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.
Member: ExcelOpfer
ExcelOpfer Jul 23, 2015 at 11:36:14 (UTC)
Goto Top
Es wäre wichtig, dass gleich alles klappt

Ich weiß welche Vorwahlen das vorkommen!
Ich schreib mir noch schnell alle Vorwahlen raus!
Mitglied: 114757
114757 Jul 23, 2015 at 11:37:04 (UTC)
Goto Top
Es wäre wichtig, dass gleich alles klappt
Gegen Cash, gerne...
Member: ExcelOpfer
ExcelOpfer Jul 23, 2015 at 11:50:35 (UTC)
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
Mitglied: 114757
114757 Jul 23, 2015 updated at 11:54:32 (UTC)
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