Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1508to1512
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
Inhaltsverzeichnis

Datei mit Filter splitten

Datei mit Filter splitten
09.08.2016 15:34:51
Leonida
Hallo liebe Leser,
ich habe eine Masterdatei mit Überschriften in Zeile 1 zur Weiterbildungsplanung, die nach Führungskräften (Spalte E) gesplittet werden soll.
Dazu habe ich folgenden Code, um die Datei zu splitten und die einzelnen Dateien unter dem Namen der jeweiligen Führungskraft abzuspeichern:
Sub WB_Planung_splitten()
' WB_Planung_splitten Makro
' Splitten der WB-Planungsliste in einzelne FK-Tools
' Tastenkombination: Strg+w
Dim v, D As Object, wb As Workbook
Application.ScreenUpdating = False
Set D = CreateObject("scripting.dictionary")
With Tabelle1
With .Range("A1:R1200").CurrentRegion
For Each v In .Columns(5).Offset(1).Value
If v  "" Then D(v) = 0
Next
For Each v In D.Keys
Set wb = Workbooks.Add(xlWBATWorksheet)
.AutoFilter 5, v
.SpecialCells(xlCellTypeVisible).Copy
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteAll
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteColumnWidths
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteValues
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteFormulas
With wb.Sheets(1)
.Name = v
.Cells.Font.Name = "Arial"
.Cells.Font.Size = 8
.Range("K2:O50").Locked = False
.Protect "wb"
End With
wb.SaveAs .Parent.Parent.Path & "\FK Tools" & "\" & v & ".xlsx",  _
xlOpenXMLWorkbook
wb.Close False
Next
.AutoFilter
End With
End With
MsgBox "Finished!"
End Sub
Jetzt ist es aber so, dass ich vor dem Ausführen des Makros einen Filter in Spalte H setze. Das Makro berücksichtigt den Filter zwar, gibt also in den einzelnen Dateien nur die Zeilen aus, die auf den Filter zutreffen, aber falls für die jeweilige Führungskraft durch den Filter keine Treffer zu finden sind, wird die Datei trotzdem abgespeichert, sodass darin die Überschriften stehen, sie aber durch den Filter keinen weiteren Inhalt haben. Ich hab schon Möglichkeiten versucht mit SpecialCells(xlCellsTypeVisible) auprobiert, allerdings scheine ich das immer an falscher Stelle einzusetzen.
Hat jemand einen Tipp, wie ich den Code verändern kann, sodass wirklich nur Dateien gespeichert werden, die auch außer den Überschriften einen Inhalt haben?
Zur Veranschaulichung habe ich eine Beispieldatei angehängt, wie die Masterdatei aussieht.
https://www.herber.de/bbs/user/107497.xlsm

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei mit Filter splitten
09.08.2016 16:46:37
Daniel
Hi
probiers mal so:
...
For Each v In D.Keys
.AutoFilter 5, v
If .Columns(1).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then
Set wb = Workbooks.Add(xlWBATWorksheet)
.SpecialCells(xlCellTypeVisible).Copy
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteAll
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteColumnWidths
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteValues
wb.Worksheets(1).Cells(1).PasteSpecial Paste:=xlPasteFormulas
With wb.Sheets(1)
.Name = v
.Cells.Font.Name = "Arial"
.Cells.Font.Size = 8
.Range("K2:O50").Locked = False
.Protect "wb"
End With
wb.SaveAs .Parent.Parent.Path & "\FK Tools" & "\" & v & ".xlsx", xlOpenXMLWorkbook
wb.Close False
End If
Next
...
am besten macht man die Prüfung, in dem man vom Filterbereich in der ersten Spalte die Anzahl der sichtbaren Zellen zählt. Ist diese = 1, ist nur die Überschriftenzeile sichtbar.
Zeilen zählen funktioniert nicht, weil .Rows.count nicht mit unterbrochenen Zellbereichen, wie sie beim Filtern entsehen können, arbeiten kann und dann nur den ersten Block, dh bis zur ersten ausgeblendeten Zeile berücksichtigt.
Cells.Count kann mit unterbrochenen Zellbereichen umgehen und berücksichtigt alle Teilbereiche.
Gruß Daniel
Anzeige
AW: Datei mit Filter splitten
10.08.2016 08:05:36
Leonida
Hallo Daniel,
vielen vielen Dank, es funktioniert einwandfrei! :)
Gruß Leonida

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige