Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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!

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

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

Anzeige
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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige