Supportnet Computer
Planet of Tech

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
Zitat:
So eine Tabelle habe ich bereits, mir fehlen jetzt die richtigen Formeln.
und den Helfern fehlen Infos zur Tabelle...
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

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

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

Antwort 6 von fürLau

Hallo Rami,

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