Telefonnummer im kanonischem Format.
#1
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
Antworten Top
#2
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
Antworten Top
#3
Hallo Fennek,


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


der ist gut. 05
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#4
Hallo, 

ja gerne. 

Vilen Dank.
Antworten Top
#5
Einfach so:

PHP-Code:
=IF(LEFT(A1;1)="+";LEFT(A1;3);"") &RIGHT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;"(";"");")";"");"-";"");" ";"");10
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
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
Antworten Top
#7
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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top
#8
Bei 030 12345678 bringt ein Inernationale Datenbank leider nichts.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
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


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#10
@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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste