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

Filterergebnis löschen

Forumthread: Filterergebnis löschen

Filterergebnis löschen
11.01.2008 17:32:00
Malte
Hallo,
ich habe folgende Frage.
Ich habe eine sehr große Tabelle mit Autofiltern.
Ich möchte in einer Spalte auf einen bestimmten Wert filtern und die nicht sichtbaren löschen.
Ich habe über die Suchfunktion folgende Lösung gefunden:
For Each zeilen In Worksheets("Tabelle1").Rows
If zeilen.EntireRow.Hidden = True Then
zeilen.Delete Shift:=xlUp
End If
Next
Das klappt auch soweit, dauert nur ewig, da die Tabelle so große ist und ich diese Prozedur mehrmals machen muss.
Wenn ich das ganze "von Hand" mache, filtere ich ja andersrum.
Filter rein, so dass ich dem Wert filtere, den ich behalten möchte
Erste sichtbare Zeile markieren
Strg+Schift+Pfeil nach Unten bis ich am Ende der Tabelle bin
Alle Zeilen auf einmal löschen.
Geht das auch in VBA alles auf einmal?
Problem ist, dass die erste sichtbare Zeile,d.h. der erste gefilterte Wert immer in einer anderen Zeile steht.
Vielen Dank im Voraus!

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filterergebnis löschen
11.01.2008 17:46:31
Ramses
Hallo
Probiers doch mal so
Sub Delete_Filter_Rows()
    'Filter nach den Werten die du nicht haben willst
    'also sichtbar sind....
    Dim i As Long, lastR As Long
    '1 = Letzten Wert in Spalte A bestimmen
    lastR = Cells(Rows.Count, 1).End(xlUp).Row
    'Bildschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    'Zeilen löschen
    '2 = Bis zur Zeile 2
    For i = lastR To 2 Step -1
        '... andernfalls muss hier "True" stehen
        If Rows(i).Hidden = False Then
            Rows(i).Delete
        End If
    Next i
End Sub

Gruss Rainer

Anzeige
AW: Filterergebnis löschen
11.01.2008 18:05:00
Malte
Hi, danke!
DAs klappt super, dauert aber sehr lange, da er halt jede Zeile kontrolliert. Es geht um ca. 1500 Zeilen.
Ich werde es erstmal so benutzen!
Gruß,
Malte

AW: Filterergebnis löschen
11.01.2008 19:26:00
Malte
.

AW: Filterergebnis löschen
11.01.2008 23:16:41
Ramses
Hallo
":..dauert aber sehr lange,..."
Dann kauf dir einen neuen Rechner :-)
Mit 12500 Datensätzen (12498 x 1 und 2 x 2) wird nach 2 gefiltert und die 12498 Zeilen gelöscht:
Das dauert bei mir weniger als 1 Sekunde !
Gruss Rainer

Anzeige
AW: Filterergebnis löschen
12.01.2008 10:05:00
Malte
Jahaaaa....
nur das die Tabelle 208 Spalten hat z.T. mit Formeln befüllt und farbigen Hintergrund. Das dauert bei mir dann ca. 1 minute das makro.
Gruß,
Malte

AW: Filterergebnis löschen
12.01.2008 20:51:00
Ramses
Hallo
Das ist doch egal wieviele Spalten deine Tabelle hat.
Sub Delete_Filter_Rows()
    'Filter nach den Werten die du nicht haben willst
    'also sichtbar sind....
    Dim i As Long, lastR As Long
    Dim start As Double
    '1 = Letzten Wert in Spalte A bestimmen
    lastR = Cells(Rows.Count, 1).End(xlUp).Row
    'Bildschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    'Automatische Berechnung abschalten
    Application.Calculation = xlCalculationManual
    'Zeilen löschen
    '2 = Bis zur Zeile 2
    start = Now
    For i = lastR To 2 Step -1
        '... andernfalls muss hier "True" stehen
        If Rows(i).Hidden = False Then
            Rows(i).Delete
        End If
    Next i
    'Automatische Berechnung wieder einschalten
    Application.Calculation = xlCalculationAutomatic
    MsgBox "Dauer: " & Format(Now - start, "hh:mm:ss")
End Sub

Gruss Rainer

Anzeige
AW: Filterergebnis löschen
11.01.2008 17:48:09
Knut
Hi,
der Makrorekorder sagt:

Sub Schaltfläche1_BeiKlick()
Columns("A:A").Select
Selection.AutoFilter Field:=1, Criteria1:="*öl*"
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
End Sub


Spalte und Kriterium natürlich anpassen.
mfg Knut

Anzeige
AW: Filterergebnis löschen
11.01.2008 18:08:22
Malte
HI Knut,
das klappt leider nicht.
Er filtert, markiert auch alles, dann kommt aber die Fehlermeldung:
"Bei überlappenden Markierungen ist die Ausführung dieses Befehls nicht möglich"
Über den eigentlichen Daten sind auch noch 7 Zeilen, die nicht gelöscht werden dürfen,
z.T. auch mit über mehrere Zeilen verdundene Zellen.
Kann man den
Selection.SpecialCells(xlCellTypeVisible).Select Befehl nicht noch eingrenzen, dass man z.B.
sagt, dass er nur ab Zeile 8 markieren soll?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Gefilterte Zeilen in Excel Löschen


Schritt-für-Schritt-Anleitung

  1. Arbeitsblatt vorbereiten: Stelle sicher, dass dein Arbeitsblatt Autofilter aktiviert hat. Du kannst dies über Daten > Filter > Autofilter tun.

  2. Filtern: Wähle die Spalte, auf die Du filtern möchtest, und setze den Filter auf den gewünschten Wert.

  3. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  4. Modul erstellen: Klicke mit der rechten Maustaste auf VBAProject (dein Arbeitsblattname), gehe zu Einfügen und wähle Modul.

  5. Code einfügen: Füge den folgenden VBA-Code ein, um die gefilterten Zeilen zu löschen:

    Sub Delete_Filtered_Rows()
       Dim i As Long, lastR As Long
       Application.ScreenUpdating = False
       lastR = Cells(Rows.Count, 1).End(xlUp).Row
       For i = lastR To 2 Step -1
           If Rows(i).Hidden = False Then
               Rows(i).Delete
           End If
       Next i
       Application.ScreenUpdating = True
    End Sub
  6. Makro ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle Delete_Filtered_Rows und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Bei überlappenden Markierungen ist die Ausführung dieses Befehls nicht möglich."
    Lösung: Stelle sicher, dass Du keine überlappenden Zellen markiert hast. Versuche, den Befehl auf einen spezifischen Zellbereich zu begrenzen.

  • Fehler: "Excel Filter kann nicht gelöscht werden."
    Lösung: Überprüfe, ob die Filtereinstellungen in Excel korrekt gesetzt sind. Gehe zu Daten > Filter > Filter löschen.


Alternative Methoden

  1. Makrorekorder nutzen: Du kannst den Makrorekorder verwenden, um eine Aktion aufzuzeichnen. Wähle die gefilterten Zeilen aus und lösche sie. Der aufgezeichnete Code kann dann bearbeitet werden, um ihn effizienter zu gestalten.

  2. Excel-Formeln: Anstatt gefilterte Zeilen zu löschen, kannst Du auch eine neue Spalte erstellen, die nur die sichtbaren Zeilen anzeigt. Verwende die Formel =WENN(SICHTBAR(A2);A2;"") und kopiere sie nach unten.


Praktische Beispiele

  • Beispiel 1: Angenommen, Du hast eine Tabelle mit Verkaufszahlen. Du filterst nach einem bestimmten Produkt und möchtest alle anderen Produkte löschen. Mit dem obigen VBA-Code kannst Du alle nicht sichtbaren Zeilen schnell entfernen.

  • Beispiel 2: In einer großen Datenbank möchtest Du nur die Einträge für einen bestimmten Zeitraum behalten. Filtere die Spalte nach Datum und führe das Makro aus, um alle nicht sichtbaren Zeilen zu löschen.


Tipps für Profis

  • Schnelligkeit erhöhen: Deaktiviere die Bildschirmaktualisierung und die automatische Berechnung, um die Ausführungsgeschwindigkeit Deines Makros zu erhöhen.

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass das Makro auch bei unerwarteten Problemen nicht abstürzt.


FAQ: Häufige Fragen

1. Warum dauert das Löschen gefilterter Zeilen so lange?
Das Löschen kann lange dauern, wenn Du eine große Anzahl von Zeilen hast. Verwende die optimierten VBA-Methoden, um die Geschwindigkeit zu erhöhen.

2. Kann ich nur bestimmte gefilterte Zeilen löschen?
Ja, Du kannst den VBA-Code anpassen, um nur bestimmte Bedingungen zu überprüfen, bevor eine Zeile gelöscht wird.

3. Funktioniert das in Excel 365?
Ja, die beschriebenen Methoden und VBA-Skripte funktionieren auch in Excel 365.

4. Wie lösche ich ausgeblendete Zeilen ohne Filter?
Du kannst die Funktion SpecialCells(xlCellTypeVisible) verwenden, um nur die sichtbaren Zellen auszuwählen und zu löschen.

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