AW: Aus mehrere Textdatei mehrere Tabelle erstellen
28.05.2017 20:59:49
fcs
Hallo Richar,
zu 1.
With Tab_Steuern ' = Worksheets("Steuern")
'Letzte Zeile mit Inhalt in Zelle in Spalte 1 (= Spalte A) ermitteln _
beginnend von der letzten Zeile im Blatt = .Rows.Count _
nach oben = ,End(xlUp)
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
If Zeile > 6 Then 'wenn ermittelte letzte Zeile > 6, d.h. es gibt Daten unterhalb _
dieser Zeile
'Inhalte im Zellbereich (Range) löschen von Zeile 7 bis zur ermittelten Zeile
.Range(.Rows(7), .Rows(Zeile)).ClearContents
End If
zu 2.
With Tab_Steuern ' = Worksheets("Steuern")
'Letzte Zeile mit Inhalt in Zelle in Spalte 1 (= Spalte A) ermitteln _
beginnend von der letzten Zeile im Blatt = .Rows.Count _
nach oben = ,End(xlUp)
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
'merken, ob beim Importieren die Daten aller Dateien in ein Tabellenblatt _
(Range("B4") = "Ja" ergibt True (Wahr)) _
oder die Daten jeder Datei in ein separates Tabelenblatt importiert werden _
sollen (Range("B4") = "Ja" ergibt False (Falsch))
bolEineTabelle = .Range("B4") = "Ja"
End With
zu 3.
Durch die Split-Anweisung weiter oben wurde der zusammengesetzte und durch die Replace-Anweisungen modifizierte Text des Datensatzes (strZeile) an den Leerzeichen getrennt und in das Daten-Array varZeile zerlegt. In dessen Datenfeldern befinden sich jetzt die Einzeltexte des Datensatzes.
In der For-Next-Schleife mit dem Zähler "i" werden jetzt die Inhalte der Datenfelder mit bestimmten Texten verglichen um die gewünschten Inhalte zu ermitteln.
'Hier wird geprüft, ob im i-ten Datenfeld des Daten-Arrays der Inhalt gleich "Kirsche" ist
ElseIf varZeile(i) = "Kirsche" Then
'wenn ja, dann wird der Inhalt des (i + 1)-ten Datenfelds in das Ergebnis-Blatt in der _
Spalte 10 (= Spalte J) eingetragen und der Spaltenzähler wird um 1 erhöht (i = i + 1), um _
die Spalte mit dem Ergebnis bei der weiteren Auswertung zu überspringen.
wks.Cells(Zeile_T, 10) = varZeile(i + 1): i = i + 1
Ich musste die Prüfung auf Inhalte am Ende des Datensatzes an den Anfang der Wert-Vergleiche stellen, da es sonst bei den Feldern, die den Verleich mehrerer Datenfelder erfordern, zu einem Fehler im Makro kommt. zB. bei "ZeitfürBananewar" - hier ergibt (i + 3) ggf. einen größeren Wert als Datenfelder im Datensatz vorhanden sind.
LG
Franz