Effizientes Arbeiten mit Excel: Filtern & Kopieren aller eindeutigen Werte in einer Tabelle
Heute zeige ich dir eine effiziente Excel Automatisierung, bei der du eine Tabelle filterst, den gefilterten Inhalt in eine neue Arbeitsmappe kopierst und diese dann speicherst und schließt. Und das für alle eindeutigen Werte in einer bestimmten Spalte. Klingt komplex? Ich zeige es dir Schritt für Schritt.
Schritt 1: Tabelle vorbereiten
Beginne in der Excel-Datei, die deine Tabelle mit den zu filternden Daten enthält. Die erste Aufgabe besteht darin, die Tabelle in eine intelligente Tabelle umzuwandeln. Dazu einfach irgendwo in die Tabelle klicken und mit Strg + T eine intelligente Tabelle daraus erstellen.
Schritt 2: Filtern nach bestimmtem Wert
Jetzt zeige ich dir, wie du mit dem AutoFilter nach einem fix vorgegebenen Wert filtern kannst. In diesem Beispiel nach „Pisichen“ in der zweiten Spalte der Tabelle.
Sub Filter_Kopieren()
' Variablen dimensionieren
Dim rng As Range
Dim wb_new As Workbook
' Tabelle einlesen
Set rng = Sheets("Tabelle1").ListObjects("tbl_Produkte").Range
' Autofilter setzen
rng.AutoFilter 2, "Pisichen"
' Neue Arbeitsmappe erstellen
Set wb_new = Workbooks.Add
' Gefilterte Tabelle kopieren
rng.SpecialCells(xlCellTypeVisible).Copy Destination:=wb_new.Worksheets(1).Range("A1")
' Neue Arbeitsmappe speichern und schließen
wb_new.Close True, ThisWorkbook.Path & "\Pisichen.xlsx"
End Sub
Schritt 3: Eindeutige Werte auslesen
Im nächsten Schritt kannst du alle eindeutigen Werte aus einer bestimmten Spalte auslesen und für jeden Wert die oben genannten Schritte wiederholen. Hier empfehle ich die Verwendung eines Dictionary, um sicherzustellen, dass nur eindeutige Werte gespeichert werden.
Sub Filter_Kopieren()
' Variablen dimensionieren
Dim rng As Range
Dim wb_new As Workbook
Dim dic As Object
Dim cell As Range
Dim key As Variant
' Tabelle einlesen
Set rng = Sheets("Tabelle1").ListObjects("tbl_Produkte").Range
' Dictionary für eindeutige Werte erstellen
Set dic = CreateObject("Scripting.Dictionary")
' Eindeutige Werte ins Dictionary einlesen
For Each cell In range(“tbl_Produkte[Produktname]
dic(cell.Value) = 0
Next cell
' Schleife über alle eindeutigen Werte
For Each key In dic.Keys
' Autofilter setzen
rng.AutoFilter 2, key
' Neue Arbeitsmappe erstellen
Set wb_new = Workbooks.Add
' Gefilterte Tabelle kopieren
rng.SpecialCells(xlCellTypeVisible).Copy Destination:=wb_new.Worksheets(1).Range("A1")
' Neue Arbeitsmappe speichern und schließen
wb_new.Close True, ThisWorkbook.Path & "\” & key “.xlsx"
Next key
End Sub
Ich hoffe dieses Tutorial hilft dir dabei, deine Datenverarbeitung automatisiert und effizient zu gestalten.
Melde dich gerne für meinen Newsletter an und erhalte regelmäßig Tipps & Tricks rund um das Thema Excel VBA!