Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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
Inhaltsverzeichnis

Autofilter per VBA aufheben

Autofilter per VBA aufheben
Dennis
Hallo zusammen,
ich habe eine sehr große Excel-Datei 13mb, mit ca. 37000 Zeilen und 120 spalten.
Mittels VBA setze ich einen Autofilter um bestimmte Daten in dieser Tabelle auszulesen.
Tab2.Range("A2:DN37000").AutoFilter Field:=4, Criteria1:="Name"
das setzen des Autofilter und rausschreiben der Daten geht auch relativ schnell. Nur wenn ich den Autofilter wieder per VBA aufhebe, dauert dies extrem lange (länger als 1min) man bekommt schon das Gefühl das Excel sich aufgehängt hat.
Zum Aufheben verwende ich folgenden Befehl:
Tab2.Range("A2:DN37000" & LZ).AutoFilter
zusätzlich befindet sich zu begin des Codes folgendes um den Durchlauf zu beschleunigen:
Application.ScreenUpdating = False
Application.Calculation = xlManual
Hat jemand von euch evtl. eine Idee wieso das im VBA so lange dauert den Filter wieder aufzuheben und ob es vielleicht eine Lösung gibt, das irgendwie noch zu beschleunigen?
Danke & Gruss
Dennis
AW: Autofilter per VBA aufheben
10.10.2011 15:47:42
Piet
Hallo Dennis,
wie lange dauert das Aufheben denn, wenn du es manuell machst? Geht das schneller?
Gruß
Piet
AW: Autofilter per VBA aufheben
10.10.2011 15:53:20
Dennis
Hallo Piet,
das Aufheben manuell dauer ebenfalls lange.
Während des "aufheben-Vorgangs" graut Excel auch aus und "keine Rückmeldung" erscheint. Wenn ich es nicht besser wüsste, dann sieht es so aus als ob Exel sich aufhängt. Wenn man aber etwas wartet wird der Vorgang schon ausgeführt....
Gruss Dennis
AW: Autofilter per VBA aufheben
10.10.2011 16:06:44
Piet
Hallo Dennis,
das lässt sich nur beschleunigen, indem du die Filtertabelle entschlackst. Ersetzte z. B. Formeln durch Werte. I. d. R. müssen diese nicht ständig neu berechnet werden, so dass es ausreicht, wenn sie in der ersten Zeile der Tabelle stehen bleiben und beim Update einmal runtergezogen und dann wieder mittels kopieren und als Werte einfügen wieder entfernt werden. Auch Verknüpfungen auf geschlossene externe Dateien sind Gift für eine flotte Performance.
Gruß
Piet
Anzeige
AW: Autofilter per VBA aufheben
10.10.2011 16:14:02
Dennis
Hallo Piet,
danke für deine Antwort, obwohl das nicht die Antwort war die ich mir erhofft habe.
Werde es mal versuchen die Formeln zu eliminieren und schauen ob es dann schneller läuft.
Evtl. schreibe ich den Code vielleicht auch ganz um und versuche das Filtern zu umgehen....
Danke & Gruß
Dennis
AW: Autofilter per VBA aufheben
10.10.2011 16:20:34
Dennis
Hallo Piet,
ich habe jetzt einmal alle Formeln in Werte umgewandelt und es dauer leider immer noch genau so lange...
Gruss Dennis
AW: Autofilter per VBA aufheben
10.10.2011 16:54:08
Piet
Hallo Dennis,
gibt es denn eine andere (geöffnete) Liste, die auf dein gefilterte Tabelle verknüpft ist? Die wird nämlich beim Filtervorgang ebenfalls aktualisiert, was dann wieder recht lange dauern kann.
Gruß
Piet
Anzeige
AW: Autofilter per VBA aufheben
10.10.2011 17:58:20
Dennis
Hallo Piet,
nein die Tabelle greit nicht auf eine zusätzliche verknüpfte Liste zu.
Alle Werte befinden sich direkt in der Liste und sind urprünglich teilweise als Formeln drin.
Aber nach deinem Tipp hatte ich einmal alle Formeln in Werte umgewandelt, was ja leider keine verbessung mit sich gebracht hat.
Gruss Dennis
AW: Autofilter per VBA aufheben
10.10.2011 18:04:42
Piet
Hallo Dennis,
das hatten wir ja auch schon geklärt. Meine Frage war, ob die Daten aus deiner gefilterten Tabelle noch in einer weiteren Tabelle verarbeitet werden, indem die Daten per Verknüpfung dort hinein gezogen werden. Wenn eine Tabelle mit Verknüpfungen auf die Filterdaten beim Filtern geöffnet ist, dauert es ähnlich lange wie im umgekehrten Fall, wenn du verknüpfte Werte aus einer geschlossenen Tabelle filterst. Aber Excel ist manchmal auch einfach nur langsam, wenn relativ viele Datensätze bearbeitet werden und der verfügbare Arbeitsspeicher nicht mehr ausreicht und der PC mit der Auslagerungsdatei arbeitet. Vielleicht hilft es ja auch, wenn du den PC einfach einmal ausschaltest und neu startest?
Gruß
Piet
Anzeige
AW: Autofilter per VBA aufheben
10.10.2011 18:11:46
Dennis
Hi Piet,
wie gesagt es sind keine verkünpfungen in der Tabelle auf irgendwelche anderen Tabelle. Die Tabelle ist in praktisch "in sich geschlossen".
Neu starten, hatte ich bereits direkt versucht und brachte leider nichts...
Vielen dank für deine Hilfe...
Gruss Dennis
AW: Autofilter per VBA aufheben
10.10.2011 17:27:46
Tino
Hallo,
weiß jetzt nicht ob es bei Deiner Tabelle hilft, ein Versuch ist es aber wert.
Versuch mal und sortiere zuerst die Tabelle mit einer Hilfsspalte,
zusammenhängende Bereiche kann Excel besser verwalten.
Beispiel:

Sub AutoFilterSetze()
Dim iCalc%, ColHilfsSpalte As Range
Dim strFilterCrit$, lngFilterSpalte&

strFilterCrit = "Name"
lngFilterSpalte = 4

With Application
    iCalc = .Calculation
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
    
    With Tab2.Range("A2:DN37000")
        With .EntireRow
            Set ColHilfsSpalte = .Columns(.Columns.Count)
            ColHilfsSpalte.FormulaR1C1 = "=RC" & lngFilterSpalte & "=""" & strFilterCrit & """"
            .Sort Key1:=ColHilfsSpalte.Cells(1, 1), Order1:=xlDescending, Header:=xlYes
        End With
        
        .AutoFilter Field:=lngFilterSpalte, Criteria1:=strFilterCrit
        
        ColHilfsSpalte.EntireColumn.Delete
    End With
  
    .Calculation = iCalc
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub

Sub AutoFilterAufheben()
Dim iCalc%
If Tab2.FilterMode Then
    With Application
        iCalc = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
    
         Tab2.ShowAllData
        
        .Calculation = iCalc
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End If
End Sub
Gruß Tino
Anzeige
AW: Autofilter per VBA aufheben
10.10.2011 18:08:27
Dennis
Hallo Tino,
danke für den Code...
Muss ich mir mal in Ruhe anschauen....
Aber ich Filter nach zwei verschiedenen Spalten die eine Spalte ist komplett gefüllt mit Werten in der anderen sind mehrere leere Zellen vorhanden, könnte das evtl das Filtern verlangsamen?
ich könnte ja auch irgendwas reinschreiben wo nun die leere Zelle ist...
Gruss Dennis
AW: Autofilter per VBA aufheben
10.10.2011 23:39:26
Tino
Hallo,
versuch es und erstell eine Formel die beide Bedingungen abdeckt.
Gruß Tino

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige