Makro das Zeilen die Bedingung erfüllen in neuer Datei zusammenfasst
#1
Hallo,

mein Problem ist sicherlich recht einfach zu lösen, aber als Makro-Einsteiger quäle ich mich schon eine ganze Weile ohne Ergebnis daran rum:

im Ordner "C:\Users\Desktop\Dateien" liegen ca. 3.500 Excel-Dateien. Für jeden Tag eine Datei mit folgender Namensgebung: "auction_YYYYMMDD".
Diese Dateien enthalten jeweils nur ein Sheet namens "Ergebnisse", das ca. 10.000 Zeilen umfasst (habe einen Screenshot zur Verdeutlichung angehängt     ).

Nun würde ich gerne in einer neuen Datei alle Zeilen aus den täglichen Dateien zusammenfassen, in denen in Spalte E eine "0" steht. In obigem Beispiel also Zeile 2 und 8.

Dafür sollten alle "auction_YYYYMMDD"-Dateien vom 01.01.2008 (also "auction_20080101.xls") bis zum 09.05.2017("auction_20170509") ausgelesen werden.

Vielen Dank schonmal für eure Unterstützung, die mir wirklich sehr helfen würde!
Felix
Top
#2
Hallo,

kennst Du schon PowerQuery? Damit sollte das ganze auch ohne VBA leicht(er) umzusetzen sein. Schau mal, Günther hat hier eine Anleitung dazu gemacht: http://www.excel-ist-sexy.de/power-query...ichnisses/
Gruß
Michael
Top
#3
Hallo Michael,

super Tipp, Power Query kannte ich tatsächlich noch nicht und das macht genau was ich brauche.

Trotzdem bin ich dabei nun auf ein neues Problem gestoßen:
in meinen Ursprungsdateien steht in Zeile 1 über der eigentlichen Überschrift noch eine Art Signatur. Wenn ich diese manuell aus der Datei lösche, funktioniert der Query einwandfrei. So lange die Signatur noch enthalten ist, die eigentlichen Überschriften Zeile 2 stehen und die Werte erst ab Zeile 3 beginnen, gibt der Query für alle Werte "error" (DataFormat.Error: Die Eingabe wurde nicht als gültiges Excel-Dokument erkannt) aus.

Daher:
-gibt es einen einfachen Weg in einer Vielzahl von Dateien Zeile 1 zu löschen?
oder
-kann ich das Query so gestalten, dass es damit umgehen kann?
im Query-Abfrage-Editor "erste Zeile löschen" und dann "erste Zeile als Überschrift" setzen führt leider nicht zum Ziel sondern gibt weiterhin "error" aus.

Danke
Top
#4
Lade doch mal eine Beispieldatei hoch. Sollte eigentlich kein Problem sein, PowerQuery zu sagen, dass er erst in Zeile x anfängt bzw. fehlerhafte Einträge zu filtern.
Gruß
Michael
Top
#5
Im Anhang eine Beispieldatei...


Angehängte Dateien
.xlsx   auction_20080101.xlsx (Größe: 259,85 KB / Downloads: 4)
Top
#6
In welchem Format liegen denn die Dateien, die Du einlesen willst, vor?

Steht in der Zeile, die entfernt werden soll, immer das Wort Signature?
Gruß
Michael
Top
#7
Die einzulesenden Dateien sind alle .xlsx-Dateien. 

Das Wort "Signature" in Zelle B1 ist in allen Dateien identisch. Der Zeitstempel in Zelle A1, der ebenfalls stört, ändert sich allerdings.
Top
#8
Ich habe es mal versucht nachzubauen. Wenn ich die Daten aus den Dateien eingelesen habe, dann habe ich zuerst die erste Zeile entfernt durch "Zeilen verringern" -> "Zeilen entfernen" -> "Erste Zeilen entfernen".

Danach habe ich im Reiter "Transformieren" den Punkt "Erste Zeile als Überschriften verwenden" gewählt. Im nächsten Schritt habe ich dann für die erste Spalte das Format auf Datum und für die zweite Spalte auf Ganzzahl umgestellt. Daraufhin kommt natürlich für die Zeilen in denen die Überschrift/das Datum steht, ein Fehler. Diese Zeilen bekommt man weg, indem man "Zeilen verringern" -> "Zeilen entfernen" -> "Fehler entfernen" ausführt.

Danach sollten die Daten eigentlich passen.
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • felix1
Top
#9
Hallo,

bevor das alte VBA ausstirbt:


Code:
Sub fen()
Dim WS As Workbook
iPath = "z:\user\" '<<<<<<<<<<<<<<<<<<<< anpassen
ifile = Dir(iPath & "auction*.xlsx")
Do While Len(ifile)
   Set WS = Workbooks.Open(iPath & ifile)
   lr = ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
       With WS.Sheets(1)
           .Range("A1:B1").Clear
           With .Cells(2, 1).CurrentRegion
               .AutoFilter 5, 0
               .Offset(1).Copy ThisWorkbook.Sheets(1).Cells(lr, "A")
           End With
       End With
   WS.Close 0
ifile = Dir
Loop
End Sub


Die Laufzeit dürfte"endlos" sein, deswegen sollte es zuerst an 2-3 Dateien getestet werden.


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • felix1
Top
#10
Vielen Dank für eure Rückmeldungen!

Michael, ich habe die Dateien jetzt auch nochmal nachgebaut und bin nach deiner Beschreibung vorgegangen. Dann funktioniert es wunderbar. Mit den Originaldateien allerdings weiterhin nicht (erst sobald ich den Inhalt aus A1:B1 lösche). Vermutlich ist das ein Problem mit dem Format.

Fennek, das Makro habe ich bis jetzt leider nicht zum Laufen gebracht, aber ich werde es weiter versuchen, weil das der einzige Weg zu sein scheint die Daten für Power Query handhabbar zu machen.

Grüße
Felix
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste