Supportnet / Forum / Tabellenkalkulation
Telefonnummern mit Excel einordnen
Frage
Hallo,
ich arbeite gerade an eine ziemlich komplizierte Aufgabe, ich komme aber ncht mehr weiter. Ich brauche Hilfe von Excel-Profis. Das Problem ist folgendes:
In eine Tabelle werden verschiedene Telefonnummern in internationalem Format eingegeben z.B. 49403423233 für einen Anschluss in Deutschland und 332075656324 für Frankreich. In eine neue Spalte soll das jeweilige Land ausgegeben werden.
Mit einer WENN-Funktion zusammen mit LINKS konnte ich das realisieren, allerdings für maximal 7 Länder.
=WENN(LINKS(A2;2)="49";"Deutschland";WENN(LINKS(A2;2)="33";"Frankreich";WENN(LINKS(A2;2)="31";"Holland";WENN(LINKS(A2;1)="1";"Kanada / USA";WENN(LINKS(A2;3)="371";"Lettland";"")))))
Ideal wäre es, wenn man eine Tabelle als Matrix benutzen könnte, in der die ganzen Ländern und deren Vorwahlen stehen. So eine Tabelle habe ich bereits, mir fehlen jetzt die richtigen Formeln.
Ich habe auch mit SVERWEIS und INDEX+VERGLEICH probiert, leider ohne Erfolg:
=SVERWEIS(A3;´Country Codes´!$A$4:$C$240;3;FALSCH)
=INDEX(´Country Codes´!$A$4:$C$240;VERGLEICH(D3;´Country Codes´!$A$4:$A$240;0);3)
Eine Antwort würde mich sehr freuen
Danke im Voraus!
Rami
Antwort 1 von fürLau
Hallo
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Zitat:
So eine Tabelle habe ich bereits, mir fehlen jetzt die richtigen Formeln.
und den Helfern fehlen Infos zur Tabelle...So eine Tabelle habe ich bereits, mir fehlen jetzt die richtigen Formeln.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 2 von pelle
Hallo Rami,
wenn ich es richtig sehe, besteht dein Problem in den unterschiedlichen Längen der Ländervorwahlnummern.
Ich sehe nur eine Lösungsmöglichkeit, eine eindeutige Trennung zwischen Ländervorwahlnummer und restlicher Telefonnummer vorzunehmen.
In meinem Beispiel habe ich mal einen - eingebaut.
Spalte A::
49-1234 = Deutschland
335-1234 = Albanien
1-1234 = Kanada
Warum hast du eigentlich die "00" weggelassen?
Die passendene Formel könnte dann so aussehen:
=SVERWEIS(WERT(TEIL(A1;1;FINDEN("-";A1;1)-1));country_codes!$A$1:$B$3;2;FALSCH)
Ob du die Funktion Wert() brauchst, hängt davon ab, wie die Formatierungen in den Zellen aussehen!
Hilft es dir weiter?
gruss
pelle
wenn ich es richtig sehe, besteht dein Problem in den unterschiedlichen Längen der Ländervorwahlnummern.
Ich sehe nur eine Lösungsmöglichkeit, eine eindeutige Trennung zwischen Ländervorwahlnummer und restlicher Telefonnummer vorzunehmen.
In meinem Beispiel habe ich mal einen - eingebaut.
Spalte A::
49-1234 = Deutschland
335-1234 = Albanien
1-1234 = Kanada
Warum hast du eigentlich die "00" weggelassen?
Die passendene Formel könnte dann so aussehen:
=SVERWEIS(WERT(TEIL(A1;1;FINDEN("-";A1;1)-1));country_codes!$A$1:$B$3;2;FALSCH)
Ob du die Funktion Wert() brauchst, hängt davon ab, wie die Formatierungen in den Zellen aussehen!
Hilft es dir weiter?
gruss
pelle
Antwort 3 von nostalgiker6
Die maximal 7 Länder lassen sich durch zwei- oder mehrstufiges Vorgehen erweitern (Künstliche Gruppe als Zwischenergebnis in Hilfsspalte, die dann mit erneutem WENN weiter auffgefächert wird.
Antwort 4 von Rami
Hallo zusammen,
in meine Mappe sieht es so aus:
Im Tabellenblatt1 (CountryCodes):
A5:A320 stehen Ländernamen
B5:B320 stehen deren Vorwahlen
C5:C320 Internet-Abkürzungen: de, us, ...
Es gibt einstellige, zweistellige, dreistellige und vierstellige Vorwahlen in der Spalte B.
Im Tabellenblatt2 (Anrufliste) werden die Telefonnummern in die Spalte A in diese Format importiert 49#########, 44########, ... und zwar ohne "00" und ohne Trennzeichen. Das jeweilige Land soll dann in der Spalte B erscheinen.
Vielen Dank für die schnelle Hilfe!
Gruß
Rami
in meine Mappe sieht es so aus:
Im Tabellenblatt1 (CountryCodes):
A5:A320 stehen Ländernamen
B5:B320 stehen deren Vorwahlen
C5:C320 Internet-Abkürzungen: de, us, ...
Es gibt einstellige, zweistellige, dreistellige und vierstellige Vorwahlen in der Spalte B.
Im Tabellenblatt2 (Anrufliste) werden die Telefonnummern in die Spalte A in diese Format importiert 49#########, 44########, ... und zwar ohne "00" und ohne Trennzeichen. Das jeweilige Land soll dann in der Spalte B erscheinen.
Vielen Dank für die schnelle Hilfe!
Gruß
Rami
Antwort 5 von pelle
Hallo Rami,
aufgrund der unterschiedlichen Länge der Vorwahlnummern sehe ich keine Möglichkeit, wenn du kein "Trennzeichen" einbauen kanst!
Sorry, vielleicht können dir die VBA-Freaks noch was anbieten!
gruss
pelle
aufgrund der unterschiedlichen Länge der Vorwahlnummern sehe ich keine Möglichkeit, wenn du kein "Trennzeichen" einbauen kanst!
Sorry, vielleicht können dir die VBA-Freaks noch was anbieten!
gruss
pelle
Antwort 6 von fürLau
Hallo Rami,
Hoffe es klappt bei Dir auch;-):
Das Progrämmchen vergleicht zunachst die ersten (linken) 4 Ziffern der Anruferliste mit der Tabelle der hinterlegten Vorwahlnummern, wenn nichts gefunden wird, erfolgt der Vergleich 3-Stellig,dann 2Stellig und dann 1-Stellig.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Hoffe es klappt bei Dir auch;-):
Option Explicit
Sub VorwahlNummern()
Dim i%, x, l%, z%, s$
Worksheets("Anrufliste").Range("B:B").ClearContents
Application.ScreenUpdating = False
For i = 1 To Worksheets("Anrufliste").Range("A65535").End(xlUp).Row
Worksheets("Anrufliste").Select
´Cells(i, 1).Select
s = CStr(Worksheets("Anrufliste").Cells(i, 1))
For l = 4 To 1 Step -1
x = CStr(Left(s, l))
With Sheets("CountryCodes")
For z = 5 To .Range("B65535").End(xlUp).Row
´Debug.Print .Cells(z, 2); "><"; x; , z
If Left(CStr(.Cells(z, 2)), Len(x)) = x Then
´Passenden gefunden
Worksheets("Anrufliste").Cells(i, 2) = Worksheets("CountryCodes").Cells(z, 1)
Debug.Print Worksheets("CountryCodes").Cells(z, 1)
Application.ScreenUpdating = True
l = 0
Application.ScreenUpdating = False
Exit For
End If
Next
End With
Next
Next
Application.ScreenUpdating = True
End Sub
Das Progrämmchen vergleicht zunachst die ersten (linken) 4 Ziffern der Anruferliste mit der Tabelle der hinterlegten Vorwahlnummern, wenn nichts gefunden wird, erfolgt der Vergleich 3-Stellig,dann 2Stellig und dann 1-Stellig.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 7 von Rami
Hallo fürLau,
danke sehr für den Code. Ich kenne mich leider mit VB nicht so gut aus. Nach dem Ausführen gab es ein Fehler beim Kompilieren und ich konnte ihn nicht korrigieren.
Eine entsprechende Formel für Excel habe ich heute gefunden, die lautet:
=WENN(ISTZAHL(VERGLEICH(LINKS(A2;4)*1;
CountryCodes!$B$5:$B$230;0));INDEX(CountryCodes
!$A$5:$C$230;VERGLEICH(LINKS(A2;4)*1;CountryCodes
!$B$5:$B$230;0);2);WENN(ISTZAHL(VERGLEICH(LINKS
(A2;3)*1;CountryCodes!$B$5:$B$230;0));INDEX(Country
Codes!$A$5:$C$230;VERGLEICH(LINKS(A2;3)*1;
CountryCodes!$B$5:$B$230;0);2);WENN(ISTZAHL
(VERGLEICH(LINKS(A2;2)*1;CountryCodes!$B$5:$
B$230;0));INDEX(CountryCodes!$A$5:$C$230;
VERGLEICH(LINKS(A2;2)*1;CountryCodes!$B$5:$
B$230;0);2);WENN(ISTZAHL(VERGLEICH(LINKS
(A2;1)*1;CountryCodes!$B$5:$B$230;0));INDEX
(CountryCodes!$A$5:$C$230;VERGLEICH(LINKS
(A2;1)*1;CountryCodes!$B$5:$B$230;0);2);""))))
Hier werden die Vorwahlen von oben nach unten abgearbeitet genau wie bei deinem Code und es funktioniert auch wunderbar.
Nochmal Dankeschön!
Gruß
Rami
danke sehr für den Code. Ich kenne mich leider mit VB nicht so gut aus. Nach dem Ausführen gab es ein Fehler beim Kompilieren und ich konnte ihn nicht korrigieren.
Eine entsprechende Formel für Excel habe ich heute gefunden, die lautet:
=WENN(ISTZAHL(VERGLEICH(LINKS(A2;4)*1;
CountryCodes!$B$5:$B$230;0));INDEX(CountryCodes
!$A$5:$C$230;VERGLEICH(LINKS(A2;4)*1;CountryCodes
!$B$5:$B$230;0);2);WENN(ISTZAHL(VERGLEICH(LINKS
(A2;3)*1;CountryCodes!$B$5:$B$230;0));INDEX(Country
Codes!$A$5:$C$230;VERGLEICH(LINKS(A2;3)*1;
CountryCodes!$B$5:$B$230;0);2);WENN(ISTZAHL
(VERGLEICH(LINKS(A2;2)*1;CountryCodes!$B$5:$
B$230;0));INDEX(CountryCodes!$A$5:$C$230;
VERGLEICH(LINKS(A2;2)*1;CountryCodes!$B$5:$
B$230;0);2);WENN(ISTZAHL(VERGLEICH(LINKS
(A2;1)*1;CountryCodes!$B$5:$B$230;0));INDEX
(CountryCodes!$A$5:$C$230;VERGLEICH(LINKS
(A2;1)*1;CountryCodes!$B$5:$B$230;0);2);""))))
Hier werden die Vorwahlen von oben nach unten abgearbeitet genau wie bei deinem Code und es funktioniert auch wunderbar.
Nochmal Dankeschön!
Gruß
Rami

