ich habe Adressdaten in einer Textdatei, die alle nach folgendem Muster untereinander stehen:
A1
B1
C1
D1
E1
F1
A2
B2
D2
E2
F2
A3
D3
E3
F3
Dabei kann es eben sein, dass bei manchen Adressen alle Zeilen (A-F) vorkommen, bei manchen fehlt B, bei manchen B&C,…
Diese Daten hätte ich nun gern ins Excel importiert, aber so, dass die Daten dann jeweils in Spalten nebeneinander stehen.
A1 | B1 | C1 | D1 | E1 | F1
A2 | B2 | | D2 | E2 | F2
A3 | | | D3 | E3 | F3
Ich hab schon versucht, die Zeilenumbrüche durch Semikolons zu ersetzen und das dann zu importieren. Aber leider ersetzt es mir dann die Zeilen zwischen den einzelnen Einträgen durch zwei Semikolons so dass Excel nicht klar ist, dass dies ein neuer Eintrag sein soll.
Außerdem wird dadurch das Problem der teilweise fehlenden Zeilen nicht erkannt.
Ich bin dankbar für jedweden Hinweis.
Vielen Dank dafür im Voraus.
Ich hab schon versucht, die Zeilenumbrüche durch Semikolons zu
ersetzen und das dann zu importieren. Aber leider ersetzt es
mir dann die Zeilen zwischen den einzelnen Einträgen durch
zwei Semikolons so dass Excel nicht klar ist, dass dies ein
neuer Eintrag sein soll.
Das ist einfach:
Ersetze doppelte Zeilenumbrüche durch „wurstbrot“
Ersetze alle Zeilenumbrüche durch Semikolon
Ersetze alle „wurstbrot“ durch Zeilenumbrüche
Außerdem wird dadurch das Problem der teilweise fehlenden
Zeilen nicht erkannt.
Das ist nicht so einfach. Könntest du mal einen konkreten Datensatz posten?
Als ersten Schritt würde ich vorschlagen, die aufeinanderfolgenden Zeilenumbrüche zu eleminieren. Ersetze die 2 aufeinanderfolgenden Zeilenumbrüche durch ein Zeichen, dass nicht in deiner Adressliste vorkommt und keine Wildcardsuche ist (z.B. § oder %). Das ersetzen klappt (relativ) gut in Word.
Der zweite schritt ist manuelle Arbeit - meiner Meinung nach leider nicht zu vermeiden. Du musst alle Adressen auf das gleiche Format bringen - also auf die gleiche Feldanzahl. Das kannst du mit einfachen Zeilenumbrüchen tun. Ab deinem 2. Beispiel also:
A2
B2
D2
E2
F2
%
A3
D3
E3
F3
Jetzt heißt es die Felder trennen -> Zeilenumbrüche durch Semikolon ersetzen lassen. Anschließend noch die Datensätze trennen -> Hilfszeichen durch Zeilenumbruch ersetzen lassen.
Wenn ich keinen groben Denkfehler gemacht habe, sollte es so funktionieren.
Als ersten Schritt würde ich vorschlagen, die
aufeinanderfolgenden Zeilenumbrüche zu eleminieren. Ersetze
die 2 aufeinanderfolgenden Zeilenumbrüche durch ein Zeichen,
dass nicht in deiner Adressliste vorkommt und keine
Wildcardsuche ist (z.B. § oder %). Das ersetzen klappt
(relativ) gut in Word.
Hat wunderbar funktioniert.
Der zweite schritt ist manuelle Arbeit - meiner Meinung nach
leider nicht zu vermeiden. Du musst alle Adressen auf das
gleiche Format bringen - also auf die gleiche Feldanzahl. Das
kannst du mit einfachen Zeilenumbrüchen tun. Ab deinem 2.
Beispiel also:
A2
B2
D2
E2
F2
%
A3
D3
E3
F3
Das hab ich jetzt noch nicht ausprobiert, da ich immernoch hoffe, dass es einen anderen Weg gibt - aber ganz ehrlich glaube ich auch nicht daran.
Jetzt heißt es die Felder trennen -> Zeilenumbrüche durch
Semikolon ersetzen lassen. Anschließend noch die Datensätze
trennen -> Hilfszeichen durch Zeilenumbruch ersetzen
lassen.
Wenn ich keinen groben Denkfehler gemacht habe, sollte es so
funktionieren.
Was jeder Datensatz gemein hat, sind „Name“, Straße, PLZ+Ort
sowie die URL.
Hi Simon,
probier mal dieses Makro, habe ich grad so runtergeschrieben, ist sicher noch zu kürzen. Das Makro erwartet exakt eine Leerzeile zwischen den Adressblöcken.
Option Explicit
'
Sub Einlesen()
Dim Z, S(), Zei As Long, Spa As Byte, Satz
Close
Open "C:\test2.txt" For Input As #1
While Not EOF(1)
Line Input #1, Satz
If Satz "" Then
Z = Z + 1
ReDim Preserve S(Z)
S(Z) = Satz
Else
Zei = Zei + 1
Z = 0
ReDim Preserve S(6)
If S(5) = "" Then
S(6) = S(4)
S(5) = S(3)
S(4) = S(2)
S(3) = ""
S(2) = ""
ElseIf S(6) = "" Then
S(6) = S(5)
S(5) = S(4)
S(4) = S(3)
S(3) = ""
End If
For Spa = 1 To 6
Cells(Zei, Spa) = S(Spa)
Next Spa
End If
Wend
Close #1
Zei = Zei + 1
Z = 0
ReDim Preserve S(6)
If S(5) = "" Then
S(6) = S(4)
S(5) = S(3)
S(4) = S(2)
S(3) = ""
S(2) = ""
ElseIf S(6) = "" Then
S(6) = S(5)
S(5) = S(4)
S(4) = S(3)
S(3) = ""
End If
For Spa = 1 To 6
Cells(Zei, Spa) = S(Spa)
Next Spa
End Sub
Hi Simon,
probier mal dieses Makro, habe ich grad so runtergeschrieben,
ist sicher noch zu kürzen. Das Makro erwartet exakt eine
Leerzeile zwischen den Adressblöcken.
Vielen Dank für das Makro. Ich hab es einfach mal drüberlaufen lassen und es passt alles perfekt! Da ich mich mit Makros nicht auskenne, werde ich es auch nicht kürzen können
Vielen Dank dir und allen die sich Gedanken gemacht haben.