Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
752to756
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
752to756
752to756
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenimport Textdatei: Datensatz Zeilen in Spalten

Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 11:33:56
Björn
Hallo Forumsmitglieder,
ich habe folgendes Problem:
Ich bekomme per Filetransfer regelmäßig eine Textdatei. Diese enthält zwischen einem und 500 Datensätzen.
Das Problem, das ich mit dieser Datei habe, ist, dass ein Datensatz nicht in einer Zeile steht und z.B. durch Tabulator, Komma odg. getrennt ist. Vielmehr ist jeder Datensatz - bestehend aus 21 Feldern - auf 21 Zeile aufgeliedert. Dann folgt ein "-" Zeichen und dann ggf. der nächste Datensatz - wieder aus 21 Zeilen bestehend.
Für meine Auswertung muss ich "natürlich" jeden Datensatz in eine Zeile mit entsprechend 21 Spalten überführen.
Jetzt zum Problem:
Wie transformiere ich die gelieferte Textdatei so, dass ich in einer Excel-Datei pro Datensatz eine Zeile habe? Hierbei ist zu beachten, dass die Textdatei zwischen einem und 500 Datensätzen enthält.
Und dann noch eine Kleinigkeit: Jede Zeile hat natürlich zunächst die Beschriftung des Feldinhaltes und dann kommt der Wert des Feldes. Sobald die Transformation der abgeschlossen ist, müssen natürlich dann pro Datensatzen die Überschriften weg. Als erste Lösung würde ich dies durch "Suchen & Ersetzen" lösen. Wenn es einen anderen Lösungsansatz gibt, freue ich mich über Anregungen.
Hier noch mal beispielhaft das Problem:
Lieferung:
Datensatz1-Zeile1
Datensatz1-Zeile2
Datensatz1-Zeile3
...
Datensatz1-Zeile21
-
Datensatz2-Zeile1
Datensatz2-Zeile2
Datensatz2-Zeile3
...
Datensatz2-Zeile21
-
Benötigt:
Spaltenüberschriften
Datensatz1 Zeile1 Zeile2 Zeile3 ... Zeile21
Datensatz2 Zeile1 Zeile2 Zeile3 ... Zeile21
Ich bedanke mich vorab für die Hilfe
Björn

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 11:44:31
ede
hallo,
gestern war schon mal ein ähnliches problem. stell mal eine kleine beispielt-Text-Datei ab!
gruss
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 12:09:39
Björn
Hallo Ede,
leider lässt sich eine Testdatei nicht hochladen. Habe daher hier mal vier Testdatensätze eingefügt:
Spalte1'A
Spalte2'B
Spalte3'C
Spalte4'D
Spalte5'1
Spalte6'2
Spalte7'3
Spalte8'4
Spalte9'5
Spalte10'6
Spalte11'7
Spalte12'8
Spalte13'9
Spalte14'10
Spalte15'11
Spalte16'12
Spalte17'13
Spalte18'14
Spalte19'E
Spalte20'F
Spalte21'G
-
Spalte1'B
Spalte2'C
Spalte3'D
Spalte4'E
Spalte5'2
Spalte6'3
Spalte7'4
Spalte8'5
Spalte9'6
Spalte10'7
Spalte11'8
Spalte12'9
Spalte13'10
Spalte14'11
Spalte15'12
Spalte16'13
Spalte17'14
Spalte18'15
Spalte19'F
Spalte20'G
Spalte21'H
-
Spalte1'A
Spalte2'B
Spalte3'C
Spalte4'D
Spalte5'3
Spalte6'4
Spalte7'5
Spalte8'6
Spalte9'7
Spalte10'8
Spalte11'9
Spalte12'10
Spalte13'11
Spalte14'12
Spalte15'13
Spalte16'14
Spalte17'15
Spalte18'16
Spalte19'E
Spalte20'F
Spalte21'G
-
Spalte1'B
Spalte2'C
Spalte3'D
Spalte4'E
Spalte5'4
Spalte6'5
Spalte7'6
Spalte8'7
Spalte9'8
Spalte10'9
Spalte11'10
Spalte12'11
Spalte13'12
Spalte14'13
Spalte15'14
Spalte16'15
Spalte17'16
Spalte18'17
Spalte19'F
Spalte20'G
Spalte21'H
-
Aufgrund des Datenschutz ist das ganze natürlich nicht die richtigen Daten ;-)
Aber das Prinzip ist das gleiche: Die Spaltenüberschrift (Länge ist veränderlich) - dann folgt ein Trennzeichen - dann der Wert - jeder Datensatz beseht aus 21 Zeilen und die Datensätze werden mit einem "-" getrennt.
Ich bedanke mich.
Björn M.
Anzeige
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 12:34:24
ede
hallo nochmal,
dann teste mal den nachstehenden code!
rückmeldung wäre super
gruss

Sub Text_Import()
Dim spalte As Integer
Dim zeile As Integer
Dim startpos As Integer
Dim Labels(255) As String
Dim LabelMax As Integer
Dim pos As Integer
Dim Label As String
Dim Wert As String
Dim sFile
Dim strtxt As String
Dim found As Boolean
Dim i As Integer
'StartVerzeichnis - bitte anpassen
'ChDrive "c:\"
'ChDir "\temp"
'Dialogfenster Öffnen
sFile = Application.GetOpenFilename _
("alle Dateien (*.txt), *.txt")
If sFile <> False Then
Close
Open sFile For Input As #1
zeile = 2
LabelMax = 0
Do While Not EOF(1)
Line Input #1, strtxt
pos = InStr(1, strtxt, "'")
If pos > 0 Then
Label = Left(strtxt, pos - 1)
Wert = Right(strtxt, Len(strtxt) - pos)
found = False
For i = 1 To LabelMax
If Label = Labels(i) Then
found = True
Exit For
End If
Next
If found Then
Cells(zeile, i) = Trim(Wert)
Else
LabelMax = LabelMax + 1
Labels(LabelMax) = Label
Cells(1, LabelMax) = Label
Cells(zeile, LabelMax) = Trim(Wert)
End If
End If
If strtxt = "-" Then zeile = zeile + 1
Loop
Close
End If
End Sub

Anzeige
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 14:44:23
Björn
Hallo Ede,
vielen Dank für Deine Unterstützung. Es funktioniert fast perfekt. Leider gibt es ein Problem mit der Spalte A.
Leider kann ich die Dateien nicht hochladen - funzt irgendwie nicht. Daher eine Beschreibung des Problems:
Spaltenüberschriften: Zelle A1: "ÿþSpalte1" - irgendwelche Steuerungszeichen - ansonsten stimmen die Spaltenüberschriften perfekt überein.
Erster Datensatz: Keine Probleme - perfekte Umsetzung - Spalten A bis U perfekt gefüllt
Zweiter bis vierter Datensatz jeweils: Spalte A leer. Die darauffolgendenden 20 Spalten (B bis U) sind korrekt gefüllt. Dann folgt in der Spalte V die eigentliche Spalte A. Die Spaltenüberschrift ist korrekt - somit dann doppelt - aber ohne die Steuerungszeichen.
Hoffe, dass ich den Fehler verständlich wiedergegeben habe. Für Rückfragen stehe ich gerne zur Verfügung.
Nochmals zur Textdatei (zur Sicherheit, falls dies für die Ursachenforschung hilfreich ist): Daten stehen ab der ersten Zeile
Bedanke mich nochmalig!
Björn
Anzeige
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 14:53:35
ede
hallo Björn,
das mit der datensatzverschiebung ab dem 2. datensatz ist logisch, da ja
im ersten datensatz die steuerzeichen mit zur spaltenbeschriftung gehört und ab dann nicht mehr vorkommt! (somit 22 verschieden)
das problem liegt somit im ersten datensatz!
kannst du die steuerzeichen vorher manuell aus der textdatei entfernen?
sind es immer die gleichen steuerzeichen am anfang oder die länge immer 2zeichen?
gruss
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 15:28:11
Björn
Hallo Ede,
vielen Dank für die schnelle Antwort. Leider kann ich keine Dateien hochladen, da immer die Meldung bezüglich eines ungültigen Dateinamens kommt.
In der Textdatei kann ich diese Zeichenfolge (ÿþ) nicht finden. Die erste Zeile der Textdatei lautet: Spalte1'A.
Habe testweise eine leere Zeile am Anfang der Textdatei eingefügt. Da funktioniert Dein Makro einwandfrei.
Würde mich freuen, wenn Du die Möglichkeit findest, dass das Makro auch ohne nachträglich eingefügte Leerzeile funktioniert. Andernfalls würde ich zunächst eine Leerzeile per Makro ergänzen.
Auf alle Fälle hast Du mir sehr weitergeholfen.
Grüße
Björn
Anzeige
AW: Datenimport Textdatei: Datensatz Zeilen in Spalten
11.04.2006 15:39:46
ede
hallo nochmal,
diese version löscht aus der ersten zeile die ersten beiden zeichen und macht dann weiter wie gehabt! ansonsten hab ich auf die schnelle auch keinen lösungsansatz!
ohne beispiel kann ich da nicht machen!
rückantwort wäre super
gruss

Sub Text_Import2()
Dim spalte As Integer
Dim zeile As Integer
Dim startpos As Integer
Dim Labels(255) As String
Dim LabelMax As Integer
Dim pos As Integer
Dim Label As String
Dim Wert As String
Dim sFile
Dim strtxt As String
Dim found As Boolean
Dim i As Integer
Dim zeile1 As Boolean
'StartVerzeichnis - bitte anpassen
ChDrive "c:\"
ChDir "\temp"
zeile1 = True
'Dialogfenster Öffnen
sFile = Application.GetOpenFilename _
("alle Dateien (*.txt), *.txt")
If sFile <> False Then
Close
Open sFile For Input As #1
zeile = 2
LabelMax = 0
Do While Not EOF(1)
Line Input #1, strtxt
'die ersten beiden zeichen (steuerzeichen)abschneiden
If zeile1 Then
strtxt = Mid(strtxt, 3)
zeile1 = False
End If
'ende-die ersten beiden zeichen (steuerzeichen)abschneiden
pos = InStr(1, strtxt, "'")
If pos > 0 Then
Label = Left(strtxt, pos - 1)
Wert = Right(strtxt, Len(strtxt) - pos)
found = False
For i = 1 To LabelMax
If Label = Labels(i) Then
found = True
Exit For
End If
Next
If found Then
Cells(zeile, i) = Trim(Wert)
Else
LabelMax = LabelMax + 1
Labels(LabelMax) = Label
Cells(1, LabelMax) = Label
Cells(zeile, LabelMax) = Trim(Wert)
End If
End If
If strtxt = "-" Then zeile = zeile + 1
Loop
Close
End If
End Sub

Anzeige
So funktioniert es prima - ich bedanke mich
11.04.2006 15:53:38
Björn
Hallo Ede,
so funktioniert es einwandfrei! Ich bedanke mich herzlichst bei Dir.
Ich kann nur nicht verstehen, woher das Steuerzeichen kommt - ist aber auch jetzt egal. Hauptsache ist, dass es funktioniert.
Grüße
Björn
super-freut mich o.t.
11.04.2006 15:58:48
ede
-

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige