leider sind meine VBA Kenntnisse nicht ausreichend, herauszufinden warum dieser Code nicht das tut, was er soll. Wenn ich den Code debugge, wird eine neue, leere Datei erstellt, aber Filtern und kopieren funktioniert nicht :-(
Ich habe noch einmal eine neue, vereinfachte Beispiel-Datei angehängt und wäre für jede Hilfe dankbar...
https://www.herber.de/bbs/user/156559.xlsx
Ziel ist es, die Tabelle für alle Zahlen in der Filterspalte nacheinander zu filtern und das Ergebnis dann in eine neue Datei zu schreiben. Für das Beispiel sollten also drei neue Dateien erstellt werden: 2019, 2020 und 2021 Es sollen allerdings nicht alle Spalten kopiert werden, daher beispielhaft Spalte 5 > "das kann weg"
Mat
Sub xxx()
Dim Jahr As Long
Dim wb As Workbook
Dim shQ As Worksheet
Dim shZ As Worksheet
Set shQ = ActiveSheet
Set wb = Workbooks.Add(xlWBATWorksheet)
Set shZ = wb.Sheets(1)
For Jahr = 2015 To 2025 'alle jahre, die theoretisch in Frage kommen
If WorksheetFunction.CountIf(sh.Columns(1), "*" & Jahr & "*") > 0 Then
'--- alles als Wert mit Format übertragen
shQ.UsedRange.Copy
shZ.Cells(1, 1).PasteSpecial xlPasteValues
shZ.Cells(1, 1).Pastespeical xlPasteFormats
shZ.Cells(1, 1).PasteSpecial xlPasteColumnWidths
'--- nicht benötigte Zeilen löschen
With shZ.UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(Countif(RC1,""*""&Jahr&""*""),Row(),0)"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlNo
.ClearContents
End With
End With
'--- nicht benötigte Spalten löschen
shZ.Range("B1,D1,F1:I1,Z1").EntireColumn.Delete
'--- speichern
wb.SaveAs ThisWorkbook.Path & "\xxx_" & Jahr, FileFormat:=xlOpenXMLWorkbook
End If
Next
wb.Close False
End Sub