Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro: Gefilterte Zeilen markieren und löschen

Makro: Gefilterte Zeilen markieren und löschen
27.03.2007 12:52:00
nochwer
ich möchte in excel 2002 mittels eines makros einige zeilen aus einer liste von ca. 1500 einträgen herausfiltern und löschen. wenn ich das mit "makro aufzeichnen" mache, kommt folgender (bereits reduzierter) code heraus.
ActiveSheet.ShowAllData
Selection.AutoFilter Field:=11, Criteria1:="x"
Selection.AutoFilter Field:=12, Criteria1:="y"
Selection.AutoFilter Field:=6, Criteria1:="21.03.2007 00:00"
Selection.AutoFilter Field:=22, Criteria1:="="
/// Rows("34:71").Select /// (hier ist das problem)
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
wie kann ich anstelle eines fixen zeilenbereichs (s. zeile mit markierung) alle herausgefilterten zeilen markieren und diese löschen?
danke für hilfe!!
lg, nochwer
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Gefilterte Zeilen markieren und löschen
27.03.2007 13:00:26
mpb
Hallo ?,
statt
/// Rows("34:71").Select /// (hier ist das problem)
Selection.Delete Shift:=xlUp
z = Range("A65536").End(xlUp).Row
Range("A2:A" & z).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Ich nehme mal an, in Spalte A stehen Daten, ansonsten die Spalte anpassen.
Gruß
Martin
Anzeige
AW: Makro: Gefilterte Zeilen markieren und löschen
27.03.2007 13:08:08
nochwer
super, danke!! :)
lg
AW: Makro: Gefilterte Zeilen markieren und löschen
27.03.2007 16:55:01
nochwer
hmmm... ich hab jetzt den code auf folgenden geändert:
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
Selection.AutoFilter
Selection.AutoFilter Field:=11, Criteria1:="x"
Selection.AutoFilter Field:=12, Criteria1:="y"
Selection.AutoFilter Field:=6, Criteria1:="21.03.2007 00:00"
Selection.AutoFilter Field:=22, Criteria1:=""
z = Range("A65536").End(xlUp).Row
Range("A2:A" & z).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Selection.Delete Shift:=xlUp
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
'----------------------

... ich verstehe nicht, warum die entsprechenden daten dabei nicht herausgelöscht werden.
folgendes habe ich inzwischen probiert/herausgefunden:
1. meine hauptvermutung: die vierte selection wurde nicht durchgeführt (filter: die zelle soll leer sein). so hat der code nach dem aufzeichnen des makros ausgesehen: ... Criteria1:="=" wie kann dieser sonst aussehen? so: Criteria1:="" scheint auch nicht zu funktionieren...
2. für die 2 zeilen ab z=...habe ich auch noch eine alternativversion entwickelt, auch diese ändert aber nichts:
Rows("2:60000").Select
Range(Selection, Selection.End(xlDown)).Select

3. oder liegt der fehler noch woanders?
danke nochmal für hilfe!!
lg :)
Anzeige
AW: Makro: Gefilterte Zeilen markieren und löschen
27.03.2007 18:24:20
mpb
Hallo ?,
1. der Makrorekorder liefert Criteria1:="="
2. Die Zeile
Selection.Delete Shift:=xlUp
ist überflüssig, die musst Du löschen.
Ansonsten Code bitte komplett posten oder Datei hochladen.
Gruß
Martin
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makros zum Löschen gefilterter Zeilen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument (z.B. Excel 2016 oder Excel 365).

  2. Aktiviere den Entwicklermodus: Gehe zu "Datei" > "Optionen" > "Menüband anpassen" und aktiviere das Kontrollkästchen "Entwicklertools".

  3. Starte den Visual Basic-Editor: Klicke auf "Entwicklertools" und wähle "Visual Basic".

  4. Füge ein neues Modul hinzu: Rechtsklicke auf "VBAProject (dein Dokument)" und wähle "Einfügen" > "Modul".

  5. Kopiere den folgenden Code in das Modul:

    Sub GefilterteZeilenLoeschen()
       If ActiveSheet.FilterMode Then
           ActiveSheet.ShowAllData
       End If
       Selection.AutoFilter
       Selection.AutoFilter Field:=11, Criteria1:="x"
       Selection.AutoFilter Field:=12, Criteria1:="y"
       Selection.AutoFilter Field:=6, Criteria1:="21.03.2007 00:00"
       Selection.AutoFilter Field:=22, Criteria1:=""
    
       Dim z As Long
       z = Range("A65536").End(xlUp).Row
       Range("A2:A" & z).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    
       If ActiveSheet.FilterMode Then
           ActiveSheet.ShowAllData
       End If
    End Sub
  6. Schließe den Visual Basic-Editor und kehre zu Excel zurück.

  7. Führe das Makro aus: Klicke auf "Entwicklertools" > "Makros", wähle dein Makro aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: "Zellen in einem gefilterten Bereich oder in einer gefilterten Tabelle können nicht verschoben werden."

    • Lösung: Stelle sicher, dass du die Filter zuerst entfernst, bevor du versuchst, die Zellen zu löschen. Der Code ActiveSheet.ShowAllData sorgt dafür, dass alle Daten angezeigt werden.
  • Fehler: Es werden nicht alle herausgefilterten Zeilen gelöscht.

    • Lösung: Überprüfe deine Filterkriterien. Stelle sicher, dass die Kriterien die gewünschten Zeilen tatsächlich erfassen.

Alternative Methoden

  • Manuelles Löschen: Du kannst auch manuell gefilterte Zeilen löschen, indem du die gewünschten Zeilen auswählst, mit der rechten Maustaste darauf klickst und "Zeilen löschen" wählst.
  • Erweiterte Filter: Verwende den erweiterten Filter, um spezifischere Bedingungen zu definieren und anschließend die gefilterten Daten zu löschen.

Praktische Beispiele

Wenn du beispielsweise nur die in Spalte A sichtbaren Zeilen löschen möchtest, kannst du den folgenden Code anpassen:

Sub BeispielLoeschen()
    Dim z As Long
    z = Range("A65536").End(xlUp).Row
    Range("A2:A" & z).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End Sub

Dieser Code löscht alle sichtbaren Zeilen in der Spalte A, nachdem die Filter angewendet wurden.


Tipps für Profis

  • Testlauf im Debug-Modus: Führe dein Makro im Debug-Modus aus, um zu sehen, wo es möglicherweise fehlschlägt.
  • Backup erstellen: Erstelle immer eine Sicherungskopie deiner Daten, bevor du ein Makro zur Löschung verwendest.
  • Code optimieren: Du kannst Variablen und Schleifen verwenden, um den Code effizienter zu gestalten und die Ausführungsgeschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur gefilterte Zeilen gelöscht werden?
Verwende die Methode SpecialCells(xlCellTypeVisible), um nur die sichtbaren (gefilterten) Zeilen zu adressieren.

2. Funktioniert das Makro in Excel 2002?
Der gezeigte Code sollte in Excel 2002 funktionieren, jedoch sind einige Funktionen in neueren Versionen möglicherweise effizienter und benutzerfreundlicher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige