Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Telefonnummernspalte bereinigen

Telefonnummernspalte bereinigen
12.05.2020 14:26:57
STeve
Hallo liebe Helfer................ Bräuchte wieder mal eure Hilfe.
In der geladenen Datei sind in Spalte F Telefonnummern. ca. 3000 Nummern. Diese müsste ich per VBA bereinigen.
Diese Daten haben leider eine schlechte Qualität:
z.B.: 0039... anstatt +39
0043....anstatt +43
43...anstatt +43
52....anstatt +4352
664...anstatt +43664
676....anstatt +43676
041... anstatt +41
Leerzeichen......../........-.......usw. vorhanden
usw. usw.
Wie im Modul ersichtlich versuche ich es mit Replace.
Sub test()
Dim meineZeile As Long
With Sheets("Tabelle1")
.Columns(6).NumberFormat = "@" ' Spalte 6 = Spalte F in Text umwandeln
For meineZeile = 2 To .Cells(Rows.Count, 6).End(xlUp).Row ' von Zeile 1 bis letzte gefüllte  _
Zeile in Spalte 6 = Spalte F
Dim Wert As String
Wert = .Cells(meineZeile, 6).Value
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "/", "")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "-", "")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, " ", "")
''''###### sollte nur auf den linken Anfangsbereich der Nummer zutreffen####
Left(Wert, 3) = Replace(Left(Wert, 3), "699", "+43699")
' .Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "699", "+43699")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "676", "+43676")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "664", "+43664")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "00664", "+43664")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "660", "+43660")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "650", "+43650")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "681", "+43681")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "680", "+43680")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "677", "+43677")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "0049", "+49")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "0041", "+41")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "0039", "+39")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "0043", "+43")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "43", "+43")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "056", "+4356")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "053", "+435")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "052", "+4352")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "051", "+4351")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "054", "+4354")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "(0)", "")
Next meineZeile
End With
End Sub

1.) Schaffe ich es nicht dass nur die ersten Zeichen der Nummer mit Replace zu tauschen und weiter werde ich da vermutlich nicht alle Möglichkeiten der - Falschschreibung - abdecken können.
2.) wäre natürlich eine Überarbeitung/Änderung Codes bzw. andere Vorgangsweise zur Bereinigung der Spalte F schöner und vermutlich schneller und genauer.
Leider kann ich derzeit keine Muster-Datei hochladen.
Ich hoffe auf eure Hilfe.
Besten Dank
STeve

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Weitere Info
12.05.2020 14:33:13
STeve
Hier noch zur Info...
…..was noch so alles in der Datei als Telefonnummer (denke es handelt sich um falsche Formatierung) aufscheint:
6,76849E+11
6,76842E+11
541266894
3,90437E+11
+43 660 1497122
4,36645E+11
0664/3907750
05230 203
0,002290807
50,18914246
Besten Dank.
mfg STeve
AW: Weitere Info
12.05.2020 14:41:08
Martin
Hallo STeve,
bevor du dir jetzt unnötige Arbeit machst, sollte besser der Import der Daten überdacht werden. Damit meine ich, dass es wahrscheinlich wesentlich einfacher wäre die Daten anders (besser!) nach Excel zu überführen als jetzt unzählige Importfehler zu bereinigen.
Woher stammen denn die Daten? Wenn die Daten ursprünglich aus einer TXT bzw. CSV-Datei kommen, wäre es viel einfacher die Daten sauber in Excel zu importieren.
Viele Grüße
Martin
Anzeige
AW: Weitere Info
12.05.2020 14:53:41
STeve
Hallo Martin...…..Danke für deine Mühen/Unterstützung vorab schon mal!!!!
Leider bekomme ich die Datei von einer anderen Organisation - dort ist es eine "Web Applikation" - JAFAD oder so ähnlich :-)- wo jeder selber eintragen kann.
Ein "gleich" sauberer Import auf Excel ist leider nicht möglich. Ich muss mit dem "Krautsalat" arbeiten.
Hoffe das ist möglich.
mfg STeve
AW: Ansatz
12.05.2020 15:18:16
Fennek
Hallo,
versuche zuerst und nach-ein-ander
- Format "allgemein" (damit die E-Schreibweise verschwindet)
- Format "Text"
Im Makro sollte "Replace" auf den ersten Treffer beschränkt werden (4. Parameter =1 ?)
mfg
Anzeige
AW: Ansatz
12.05.2020 15:38:16
STeve
Hallo Fennek....danke für deine Hilfe.
Formatierung:
"allgemein" --- denke du meinst "Standard" = "General"
und dann
"Text"....
........................geht leider nicht - E- Schreibweise - bleibt
Replace:
Habe jetzt die 1 auf dem 4. Parameter eingebaut:
Left(Wert, 3) = Replace(Left(Wert, 3), "699", "+43699", 1)
aber leider meldet er:
Laufzeifehler 424 - Objekt erforderlich.
…..bringe die Codezeile leider nicht korrekt zusammen - läuft nicht.
lg
AW: Ansatz
12.05.2020 15:46:40
Martin
Hallo Fennek,
ich glaube, dass die Replace-Funktion für dein Anliegen eher ungeeignet ist. Hast du mal Select Case in Betracht gezogen?
Sub test()
Dim meineZeile As Long
With Sheets("Tabelle1")
.Columns(6).NumberFormat = "@" ' Spalte 6 = Spalte F in Text umwandeln
For meineZeile = 2 To .Cells(Rows.Count, 6).End(xlUp).Row ' von Zeile 1 bis letzte gefü _
llte _
Zeile in Spalte 6 = Spalte F
Dim Wert As String
Wert = .Cells(meineZeile, 6).Value
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "/", "")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "-", "")
.Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, " ", "")
''''###### sollte nur auf den linken Anfangsbereich der Nummer zutreffen####
Left(Wert, 3) = Replace(Left(Wert, 3), "699", "+43699")
' .Cells(meineZeile, 6).Value = Replace(.Cells(meineZeile, 6).Value, "699", "+43699") _
Select Case Left(Wert, 3)
Case "676", "664", "660" 'usw.
.Cells(meineZeile, 6).Value = "+43" & Wert
End Select
Wert = .Cells(meineZeile, 6).Value
Select Case Left(Wert, 4)
Case "0039", "0041", "0043" 'usw.
.Cells(meineZeile, 6).Value = "+" & Right(Wert, Len(Wert) - 2)
End Select
Next meineZeile
End With
End Sub
Viele Grüße
Martin
Anzeige
AW: Ansatz
12.05.2020 16:00:44
STeve
Hallo Martin...das ist schon mal eine super Idee!!! Danke dir.

Select Case
ist mir nicht eingefallen und mit deinem Grundcode werde ich wohl alle Varianten abdecken können.
Aber mit der Formatierung - vor der Bereinigung - von solchen Einträgen:
6,76882E+11
da gibt's keine Lösung?
lg STeve
AW: Ansatz
12.05.2020 16:04:37
Martin
Hallo Steve,
wandle den Zellinhalt doch einfach in Text um:
.Cells(meineZeile, 6) = CStr(.Cells(meineZeile, 6))
Viele Grüße
Martin
Danke ....jetzt kann ich mal werkeln.
12.05.2020 16:23:40
STeve
Hallo Martin...das klappt auch super!!!!!
Danke bestens!!!
Werde bald mal alle Möglichkeiten in Select Case einbauen und hoffe brauche mich nicht mehr zu melden.
Dir inzwischen einen schönen Tag und Danke nochmal
lg STeve
Anzeige
Nachtrag
12.05.2020 16:26:46
Martin
Hallo Steve,
die CStr-Konvertierung geht doch nicht, bei den Zellen mit der "E+"-Formatierung musst du wohl doch um das Datenmaterial in neuer Form bitten. Ich entschuldige mich für die Fehlinformation.
Viele Grüße
Martin
AW: Nachtrag
12.05.2020 16:37:38
STeve
Hallo Martin.
Hmmmmmm…..es wirft wohl - mit deinem Formatierungsvorschlag - eine eigenartige Nummer aus. Kann nicht sagen ob diese Nummer dann korrekt ist?
Muss ich erst überprüfen.
Keine Ursache - mal nix passiert. Danke für deine Hilfe.
lg
Datei hochgeladen -Telefonnummernspalte bereinigen
12.05.2020 15:47:49
STeve
Hallo ....
....hier jetzt eine hochgeladene Datei - wo in Spalte F anonymisierte - TelefonNummern
eingetragen sind.
https:\/\/www.herber.de/bbs/user/137469.xlsx
mfg
STeve
Anzeige
AW: "Danke für Covid-Politik"
12.05.2020 16:17:44
Fennek
Hallo,
die wissenschaftliche Formatierung "E+" ist nicht mehr zu retten, da ist ein Rückgriff auf die Original-Daten notwendig.
Für die Replace mit den ersten 3 Ziffern geht:

Sub F_en()
For i = 2 To Cells(Rows.Count, 6).End(xlUp).Row
Select Case Val(Left(Cells(i, 6), 3))
Case Is = 699, 676, 664, 660, 650, 681, 677, 56, 53, 52, 51, 54
Cells(i, 7) = "'+43" & Cells(i, 6)
End Select
Next i
End Sub
Für die Varianten mit den 1. vier Ziffern mußt Du das analog anpassen.
mfg
(Ich vermute mal, dass ihr recht humorlos seit und auch kein Verständnis für Sarkasmus habt, aber selbst ihr müßt mitbekommen haben, dass es einen fundamentalen Unterschied in der Denkweise von Ökonomen (Rezession minimieren) und Virologeen("alles tun") gibt)
Anzeige
AW: "Danke für Covid-Politik"
12.05.2020 16:29:57
STeve
Hallo Fennek.....wouw wieder ein kurzer und knackiger Code von dir!!!!
Tausend Dank für deine Hilfe/Lösung/Unterstützung.
Werde mir das anschauen und natürlich probieren.
Da habe ich wieder was zu lernen!!!!!!
Dir inzwischen noch einen schönen Tag.
lg STeve
AW: "Danke für Covid-Politik"
12.05.2020 17:17:41
STeve
PS:
Covid Politik:
Der Humor vergeht einem wenn man sieht wie schnell die "Normalität" abgeschafft werden kann.
Egal ob kleines Vorzeige-Land - das wurde ein Selbstläufer in jedem Staat.
Keiner der seinen Sessel behalten will kann so eine Angstmache ignorieren.
lg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige