Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filtern Speichern in extra Dateien

Forumthread: Filtern Speichern in extra Dateien

Filtern Speichern in extra Dateien
17.05.2019 12:08:00
Denny
Hallo zusammen,
ich benötige ein Makro und habe es versucht aufzunehmen aber komme damit nur bedingt an meine ziel.
Ich habe eine Datei mit ca. 150 Kriterien in Spalte B.
Ich möchte das nacheinander alle Kriterien gefiltert werden und eine Datei mit den gefilterten Werten gespeichert wird. Ich stelle mir das so vor.
Es wird die in Spalte B die 1 gefiltert und die Daten die unter 1 angezeigt werden komplett mit Filter und Format in eine neue Datei gespeichert mit der Bezeichnung 1 und dem aktuellen Datum. So das ich in meine Fall 150 Dateien erhalte. Wichtig ist noch, dass es ein zweites Tab gibt, was immer gleich ist aber mit jeder Datei gespeichert werden soll.
Für Jede Hilfe wäre ich sehr dankbar.
Vielen Dank.
Beste Grüße
Denny
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtern Speichern in extra Dateien
17.05.2019 13:24:17
UweD
Hallo
in ein normales Modul...
Modul1
Option Explicit 
 
Sub Denny() 
    Dim WB, TB, TMP, TBN, Pfad As String, LR As Integer, i As Integer, Datei As String, Ext As String 
         
    '*** bescheunigt das Makro 
    Application.ScreenUpdating = False 
 
    Set TB = Sheets("Tabelle1") 
    Pfad = "x:\Temp\test\" 
    Ext = ".xlsx" 
     
    If TB.AutoFilterMode Then TB.AutoFilterMode = False ' Autofilter ausschalten 
     
    'temp. Blatt anlegen 
    Set TMP = Sheets.Add(After:=Sheets(Sheets.Count)) 
     
    'copieren 
    TB.Columns(2).Copy TMP.Columns(1) 
     
    With TMP 
        .Range("$A:$A").RemoveDuplicates Columns:=1, Header:=xlYes 
     
        'sortieren 
        With .Sort 
            .SortFields.Clear 
            .SortFields.Add Key:=Range("A1"), _
                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
            .SetRange Range("A:A") 
            .Header = xlYes 
            .MatchCase = False 
            .Orientation = xlTopToBottom 
            .SortMethod = xlPinYin 
            .Apply 
        End With 
         
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
 
    End With 
 
    With TB 
         
        For i = 2 To LR 
            Datei = TMP.Cells(i, 1) 
             
            'filtern 
            .Range("$B:$B").AutoFilter Field:=1, Criteria1:=Datei 
     
            'Neues Blatt 
            Set TBN = Sheets.Add(After:=Sheets(Sheets.Count)) 
             
            'Kopieren der gefilterten Daten 
            .UsedRange.Copy TBN.Cells(1, 1) 
             
            'umbenennen 
            TBN.Name = Datei 
             
            'verschieben in eigene Datei 
            TBN.Move 
             
            'Speichern und schließen 
            With ActiveWorkbook 
                .SaveAs Filename:=Pfad & Datei & "_" & Format(Date, "YYYY_MM_DD") & Ext, _
                    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 
                 
                .Close 
            End With 
        Next 
     
        .AutoFilterMode = False 
     
    End With 
     
    'temp. Blatt löschen 
    With Application 
        .DisplayAlerts = False 
        TMP.Delete 
        .DisplayAlerts = True 
    End With 
     
End Sub 
LG UweD
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Gefilterte Excel-Tabellen in separate Dateien speichern


Schritt-für-Schritt-Anleitung

Um gefilterte Excel-Tabellen zu speichern, benötigst du ein einfaches Makro. Folge diesen Schritten:

  1. Öffne die Excel-Datei, die du filtern möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Rechtsklick auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere den folgenden Code in das Modul:
Option Explicit

Sub FilterUndSpeichern()
    Dim WB As Workbook, TB As Worksheet, TMP As Worksheet
    Dim Pfad As String, Datei As String, Ext As String
    Dim LR As Integer, i As Integer

    Application.ScreenUpdating = False

    Set TB = Sheets("Tabelle1")
    Pfad = "C:\Dein\Pfad\"
    Ext = ".xlsx"

    If TB.AutoFilterMode Then TB.AutoFilterMode = False

    Set TMP = Sheets.Add(After:=Sheets(Sheets.Count))
    TB.Columns(2).Copy TMP.Columns(1)

    With TMP
        .Range("$A:$A").RemoveDuplicates Columns:=1, Header:=xlYes
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

    For i = 2 To LR
        Datei = TMP.Cells(i, 1)

        With TB
            .Range("$B:$B").AutoFilter Field:=1, Criteria1:=Datei
            TB.UsedRange.Copy Sheets.Add(After:=Sheets(Sheets.Count)).Cells(1, 1)
            ActiveSheet.Name = Datei
            ActiveWorkbook.SaveAs Filename:=Pfad & Datei & "_" & Format(Date, "YYYY_MM_DD") & Ext
            ActiveWorkbook.Close
        End With
    Next i

    TMP.Delete
    Application.ScreenUpdating = True
End Sub
  1. Passe den Pfad (Pfad) in der Zeile Pfad = "C:\Dein\Pfad\" an, um den Speicherort für die gefilterten Dateien festzulegen.
  2. Führe das Makro aus, indem du F5 drückst oder über Run im Menü des VBA-Editors.

Mit diesem Makro kannst du die gefilterten Excel-Tabellen speichern und erhältst für jedes Kriterium eine separate Datei.


Häufige Fehler und Lösungen

  • Fehler: "Die Datei kann nicht gespeichert werden."

    • Lösung: Überprüfe, ob der Pfad korrekt ist und ob du Schreibrechte für das Zielverzeichnis hast.
  • Fehler: "Das Makro funktioniert nicht wie erwartet."

    • Lösung: Stelle sicher, dass die Spalte B die Filterkriterien enthält und die Tabelle korrekt benannt ist.

Alternative Methoden

Falls du kein Makro verwenden möchtest, kannst du auch manuell filtern und die Daten kopieren:

  1. Filtere die Tabelle über die Filteroptionen in Excel.
  2. Markiere die gefilterten Daten und kopiere sie.
  3. Füge die kopierten Daten in eine neue Excel-Datei ein.
  4. Speichere die neue Datei unter einem gewünschten Namen.

Diese Methode ist zwar weniger automatisiert, kann aber in bestimmten Situationen nützlich sein.


Praktische Beispiele

Beispiel 1: Wenn du eine Liste von Verkäufen hast und nur die Verkäufe von "Produkt A" speichern möchtest, filtere die Tabelle nach "Produkt A" und speichere die gefilterte Liste als neue Datei.

Beispiel 2: Wenn du eine große Tabelle mit Kundendaten hast, kannst du die gefilterte Excel-Liste speichern, die nur die Kunden aus einer bestimmten Stadt zeigt.


Tipps für Profis

  • Verwende benannte Bereiche, um die Handhabung von Daten zu erleichtern.
  • Speichere die Filtereinstellungen, um später schnell wieder auf die gleichen Filter zugreifen zu können.
  • Nutze die Möglichkeit, mehrere Filter gleichzeitig anzuwenden, um die gewünschten Daten präziser zu extrahieren.

FAQ: Häufige Fragen

1. Kann ich die Filtereinstellungen speichern? Ja, du kannst die Filtereinstellungen speichern, indem du die Tabelle als Vorlage speicherst oder ein Makro erstellst, das die Einstellungen automatisch anwendet.

2. Was, wenn ich nur einen Teil der gefilterten Daten speichern möchte? Du kannst die gewünschten Zeilen manuell auswählen und nur diese kopieren, bevor du sie in eine neue Datei einfügst.

3. Funktioniert das Makro in allen Excel-Versionen? Das Makro sollte in den meisten aktuellen Versionen von Excel funktionieren, einschließlich Excel 2016 und neuer.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige