Clever-Excel-Forum

Normale Version: Telefonnummer im kanonischem Format.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hola Smile

ich habe da ein kleines Problem und hoffe auf Hilfe von Euch. 

Ich habe eine Liste mit unzähligen Telefonnummern. 

Leider sind die Nummern alle unterschiedlich

z.B:
03012346578
+49(30)12345678
+31 (45) 12345678
030-12345678
030 12345678
+49-30-12345678

Mein Ziel ist es, alle Telefonnummern im kanonischen Format gleich zu haben und zwar so 

+49 30 123456-78
Länderkennung  Vorwahl Rufnummer

Als Datenbasis hätte ich auch die Länderkennung in der Liste:
z. B. Deutschland DE, Spanien ES, Italien IT...


Gibt es da eine Möglichkeit?

Gracias.

Monsterbabe
Hallo,

vor einiger Zeit habe ich einen VBA-Code geschrieben, der (fast) die gewünschten Umformatierungen vornimmt. Vielleicht war mein Code zu umständlich, jedenfalls sind solide Grundkenntnisse in VBA nötig.

Käme das infrage?

mfg
Hallo Fennek,


Zitat:Vielleicht war mein Code zu umständlich, jedenfalls sind solide Grundkenntnisse in VBA nötig.


der ist gut. 05
Hallo, 

ja gerne. 

Vilen Dank.
Einfach so:

PHP-Code:
=IF(LEFT(A1;1)="+";LEFT(A1;3);"") &RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;"(";"");")";"");"-";"");" ";"");10
Hallo,

ich hatte damals an dem Code ziemlich gebastelt, bis Festnetz- und Mobilfunknummern erfasst wurden. Da damals fast nur deutsche Nummern dabei waren, wurden internationale Nummern vernachlässigt.

Code:
Function fn_tel(ByVal Tel As String) As String
    If IsDate(Tel) Then Exit Function
    If Len(Trim(Tel)) = 11 Then Exit Function
   
    Select Case Left(Trim(Tel), 1)
    Case Is = "+", "0"
        Tel = Replace(Tel, Chr(32), "")
        Tel = Replace(Tel, "/", "")
        Tel = Replace(Tel, "-", "")
        Tel = Replace(Tel, "(0)", "")
        Tel = Replace(Tel, "(", "")
        Tel = Replace(Tel, ")", "")
        If UCase(Tel) <> LCase(Tel) Then Exit Function
        pos = InStr(1, Tel, "-")
        If pos And pos < 6 Then Tel = Replace(Tel, "-", "", , 1)
        If Left(Tel, 1) = 0 And Mid(Tel, 2, 1) <> 0 Then Tel = "+49" & Mid(Tel, 2)
        fn_tel = Tel
    Case Else
        Debug.Print "Tel", Tel
    End Select
End Function

Ist doch gar nicht so schlimm.
[img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

mfg

PS: Jedenfalls möchte ich jetzt keine Anpassungen für den/die FragestellerIn programmieren
Ich wundere mich bei den bisherigen Antworten, wie man dort für das erste Beispiel des TE die nationalen Hierarchien einbaut. Das geht doch nur mit einer internationalen Datenbank, die die Trennungen (oder Systematiken) von +Land-Region-Anschluss enthält. Als Region gilt hier auch Handy-Vorwahl.

Um das nicht selbst programmieren zu müssen, könnte man z.B. die entsprechende Routine von Google-Contacts bemühen.
Bei 030 12345678 bringt ein Inernationale Datenbank leider nichts.
Man hat aber den ISO Ländercode aus den man die Landesvorwahl aus einer Datenbank ziehen könnte?

Oder?
[
Bild bitte so als Datei hochladen: Klick mich!
]


Monsterbabe
@snb: Doch. Das ist dann Deutschland-Berlin, denn der Programmersteller oder -verwender ist deutsch. Oder die Google-Spracheinstellung ist Deutschland-deutsch. Oder, oder ... Und wenn die Pferde vor der Apotheke wirklich kotzen (etwa weil das Programm multinational eingesetzt wird), kann das Programm immer noch manuell nach dem Land fragen. Außerdem gilt als internationaler Eintrag + oder 00 (oder Sonderfälle der Verkehrsausscheidungsziffer), aber niemals nur 0.

2030,5 bedeutet ja auch Leeuwarden-Abakus mit Holzkugeln und nicht etwa Amsterdam-Registrierkasse-Klingeling.