Autofilter in Excel 2010 umständlicher als in 2002

Hallo,
ich benutze sehr häufig den Autofilter in Excel 2002.
Wenn ich jetzt die gleiche Datei mit Excel 2010 öffne, fällt mir auf, dass ich für das Setzen/Aufheben/Verändern eines Filters teilweise mehr als doppelt so oft klicken muss wie bisher.
Beispiel: In einer Spalte ist ein Filter gesetzt. Nun will ich einen anderen Eintrag wählen:
Excel 2002: 1. Spaltenpfeil anklicken, 2. Eintrag wählen, fertig.
Excel 2010: 1. Spaltenpfeil anklicken, 2. Alles auswählen klicken, 3. Alles auswählen nochmal klicken, 3. nach unten scrollen, 4. gewünschten Wert anklicken, 5. Ok klicken und damit fertig.
Auch die Alternative, über „Textfilter“ zu gehen, ist nicht schneller.
Auch wenn ich in einer ungefilterten Spalte einen Filters setzen will, mußte ich bisher 2 x klicken und jetzt 4 x, ähnlich ist es, wenn ich z.B. ein Datumsintervall eines Filters ändern will.
Ist es möglich, diese „Umwege“ in Excel 2010 irgendwie zu vermeiden?

Hallo mara,

Excel 2002: 1. Spaltenpfeil anklicken, 2. Eintrag wählen,
fertig.

Excel 2010: 1. Spaltenpfeil anklicken, 2. Alles auswählen
klicken, 3. Alles auswählen nochmal klicken, 3. nach unten
scrollen, 4. gewünschten Wert anklicken, 5. Ok klicken und
damit fertig.

ich habe beide Versionen nicht, kann also nix prüfen. Jetzt nicht prüfen ob du was Falsches beschreibst sondern prüfen ob man das im Rahmen von XL2010 verkürzen könnte, ggfs. mit irgendwelchen Tastenkombinationen o.ä.

Denkbar wäre, mit Vba (makros) etwas zu basteln.
Interesse?
Testen kann ich es nur in XL2007, aber spielt ja keine Rolle.

Auch die Alternative, über „Textfilter“ zu gehen, ist nicht
schneller.

Was ist denn „Textfilter“, ich hab XL2000 und XL2007, gibt es den da auch? Ein Ja reicht als Antwort, ich werd immer besser was in XL2007 zu finden :smile:)

Gruß
Reinhard

Grüezi mara

Beispiel: In einer Spalte ist ein Filter gesetzt. Nun will
ich einen anderen Eintrag wählen:

Excel 2002: 1. Spaltenpfeil anklicken, 2. Eintrag wählen,
fertig.

Excel 2010: 1. Spaltenpfeil anklicken, 2. Alles auswählen
klicken, 3. Alles auswählen nochmal klicken, 3. nach unten
scrollen, 4. gewünschten Wert anklicken, 5. Ok klicken und
damit fertig.

Auch wenn ich in einer ungefilterten Spalte einen Filters
setzen will, mußte ich bisher 2 x klicken und jetzt 4 x,
ähnlich ist es, wenn ich z.B. ein Datumsintervall eines
Filters ändern will.

Ist es möglich, diese „Umwege“ in Excel 2010 irgendwie zu
vermeiden?

Nein, das ist IMO leider nicht möglich ohne auf VBA-Programmierung auszuweichen (wobei ich da auch keine Lösung bereit habe).

Der Wunsch nach einer Merhfach-Auswahl an Kriterien ist offenbar so laut geworden, dass MS diesem mit xl2007 Rechnung getragen hat und diese nun möglich ist.
Darunter leidet dann die Usability, wenn man nun einen einzelnen Eintrag wechseln will.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo,

Was ist denn „Textfilter“, ich hab XL2000 und XL2007, gibt es
den da auch? Ein Ja reicht als Antwort, ich werd immer besser
was in XL2007 zu finden :smile:)

leider konnte ich erst jetzt antworten, weil ich zuhause weder XL2000 noch XL2007 oder XL2010 habe. Und hier habe ich auch nur XL2002 und XL2010.
Der Textfilter sieht so aus:
http://img806.imageshack.us/i/unbenanntrv.jpg/
und entspricht in etwa dem Benutzerdefinierten Filter in XL2002:
http://img88.imageshack.us/i/unbenannt1kzi.jpg/

Denkbar wäre, mit Vba (makros) etwas zu basteln.
Interesse?

Das scheint die einzige Möglichkeit zu sein. Wie aufwendig ist so etwas? Und wie flexibel einsetzbar?

http://img806.imageshack.us/i/unbenanntrv.jpg/
http://img88.imageshack.us/i/unbenannt1kzi.jpg/

Denkbar wäre, mit Vba (makros) etwas zu basteln.
Interesse?

Das scheint die einzige Möglichkeit zu sein. Wie aufwendig
ist so etwas? Und wie flexibel einsetzbar?

Hallo Mara,

es ist aufwendig dies in Vba nachzubauen, ich weiß nicht ob ich dazu Lust habe, denn es erforderet viel Zeit.
Machbar sicher. Und ja, es ist dann viel flexibler als der Autofilter. Denn ich lege dann fest was wie wann wodurch geschieht.

Ich habe nachstehend was gebastelt, was als Basis gelten könnte. Man kann bei sowas verschiedene Ansätze wählen/erdenken, wie man das Problem löst. Und der von mir so planlos erdachte Weg ist sicher machbar, aber es kommen dann garantiert Probleme die ich noch nicht überblicken/testen kann.

Erst wenn der Code halbwegs fertig ist kann ich ihn testen, wie lange er denn braucht um 567.321 Zeilen zu filtern usw.
Wenn das unpraktisch zu lange dauert, kann ich den bisherigen Code in die Tonne kippen und einen neuen Weg erdenken und wieder von vorne beginnen.

Da ich das im Vorhinaus weiß, sage ich halt daß ich nicht weiß ob ich dazu Lust habe habe, wenn kein Scheck kommt, eher nicht :smile:)

Aus reiner Neugier habe ich schon was gebastelt, ist noch Baustelle, Kleigkeiten gehen schon, die eigentliche Filterung fehlt noch komplett.

Hier die Beispielmappe, nachstehend der Hauptcode dazu, damit du siehst was ich mit aufwendig meinen könnte.

http://www.file-upload.net/download-3217135/AutoFilt…

Gruß
Reinhard

Option Explicit

Sub MeinFilter()
Call LoeschePfeil
If Selection.Cells.Count \> 1 Then Exit Sub
If ActiveCell.Row 1 Then Exit Sub
If ActiveCell.Value = "" Then Exit Sub
Call Bereich
Call LBFuellen(ActiveCell)
Call LBHide
End Sub

Sub LBFuellen(Zelle As Range)
Dim objLB As Object, colAusw As New Collection, Zei As Long
Set objLB = ActiveSheet.OLEObjects("ListBox1")
With objLB
 .Object.Clear
 .Object.AddItem "(Alle)"
 .Object.AddItem "(Leere)"
 .Object.AddItem "(Nichtleere)"
 .Object.AddItem "Top Ten"
 On Error Resume Next 'wg colAusw
 For Zei = 2 To Cells(Rows.Count, Zelle.Column).End(xlUp).Row
 colAusw.Add Item:=CStr(Cells(Zei, Zelle.Column).Value), key:=CStr(Cells(Zei, Zelle.Column).Value)
 Next Zei
 For Zei = 1 To colAusw.Count
 .Object.AddItem colAusw(Zei)
 Next Zei
 On Error GoTo 0
 .Visible = True
End With
End Sub

Sub Bereich()
Dim Von As Long, Bis As Long, N As Integer
Von = ActiveCell.Column
Bis = ActiveCell.Column
For N = Von To 2 Step -1
 If Cells(1, N - 1).Value = "" Then Exit For
 Von = Von - 1
Next N
For N = Bis To Columns.Count - 1
 If Cells(1, Bis + 1).Value = "" Then Exit For
 Bis = Bis + 1
Next N
For N = Von To Bis
 Call ErzeugePfeil(N, Cells(1, N))
Next N
Call Kopieren(Von, Bis)
End Sub

Sub Kopieren(ByVal Von As Long, ByVal Bis As Long)
Dim wksK As Worksheet
Set wksK = Worksheets("Kopie")
Application.ScreenUpdating = False
wksK.UsedRange.Clear
With Worksheets("Tabelle1")
 .Range(.Cells(1, Von), .Cells(1, Bis)).Resize(Rows.Count).Copy Destination:=wksK.Columns(Von)
 wksK.Activate
 wksK.Cells(1, Von).AutoFilter
 .Activate
End With
Application.ScreenUpdating = True
End Sub

Sub LoeschePfeil()
Dim Sh
Application.ScreenUpdating = False
For Each Sh In ActiveSheet.Shapes
 If Sh.Name Like "Pfeil\*" Then Sh.Delete
Next Sh
Application.ScreenUpdating = True
End Sub

Sub ErzeugePfeil(ByVal Nr As Integer, ByRef Zelle As Range)
Dim L, T, H, W
L = Zelle.Offset(0, 1).Left - 10
T = Zelle.Top
W = 10
H = 12.75
Application.ScreenUpdating = False
With ActiveSheet
 .Shapes.AddShape(msoShapeDownArrow, L, T, W, H).Name = "Pfeil" & Nr
 With .Shapes("Pfeil" & Nr)
 .Fill.Visible = msoTrue
 .Fill.Solid
 .Fill.ForeColor.SchemeColor = 8
 .Fill.Transparency = 0#
 .Line.Weight = 0.75
 .Line.DashStyle = msoLineSolid
 .Line.Style = msoLineSingle
 .Line.Transparency = 0#
 .Line.Visible = msoTrue
 .Line.ForeColor.SchemeColor = 64
 .Line.BackColor.RGB = RGB(255, 255, 255)
 .OnAction = "Filter"
 End With
End With
Application.ScreenUpdating = True
End Sub

Sub Blau(ByVal strNr As String)
With ActiveSheet.Shapes("Pfeil" & strNr)
 .Fill.ForeColor.SchemeColor = 12
 .Line.ForeColor.SchemeColor = 12
End With
Call LBUnHide
End Sub

Sub Schwarz(ByVal strNr As Integer)
With ActiveSheet.Shapes("Pfeil" & strNr)
 .Fill.ForeColor.SchemeColor = 8
 .Line.ForeColor.SchemeColor = 8
End With
End Sub

Sub Filter()
'MsgBox Mid(Application.Caller, 6)
Call Blau(Mid(Application.Caller, 6))
End Sub


Sub Makro4()
'
' Makro4 Makro
' Makro am 15.02.2011 von r aufgezeichnet
'

'
 ActiveSheet.OLEObjects.Add(ClassType:="Forms.ListBox.1", Link:=False, \_
 DisplayAsIcon:=False, Left:=300, Top:=12.75, Width:=60, Height:=63.75 \_
 ).Select
End Sub
Sub LBHide()
ActiveSheet.OLEObjects("ListBox1").Visible = False
End Sub

Sub LBUnHide()
ActiveSheet.OLEObjects("ListBox1").Visible = True

End Sub
Sub groesse()
ActiveSheet.OLEObjects("ListBox1").Width = 90
ActiveSheet.OLEObjects("ListBox1").Height = 120
End Sub

Hallo Reinhard,
das gibt schonmal einen guten Überblick. Ich werde mir das anschauen, habe aber zuhause derzeit noch kein XL2010.
Im Moment kann ich hier das XL2002 noch benutzen.
Mir ist auch nicht klar, ob Makros sinnvoll sind (meine Dateien sind über 40.000 Zeilen groß und manche Makros, die ich bisher gesehen habe, sind sehr langsam gelaufen), außerdem bräuchte ich mindestens die Möglichkeit, ein =TEILERGEBNIS per Formel zu bilden sowie die Möglichkeit, das gefilterte (und nur das) zu kopieren.
Wenn ich noch was brauche, melde ich mich wieder.
Danke + Gruß

Hallo Mara,

Mir ist auch nicht klar, ob Makros sinnvoll sind (meine
Dateien sind über 40.000 Zeilen groß und manche Makros, die
ich bisher gesehen habe, sind sehr langsam gelaufen),

Makros, grad wenn sie Zeilen/zellen einzeln abklappern müssen sind einige tausend mal langsamer als Excelformeln.
Mein Ansatz, auch wenn du das noch nicht erkennst, beruht aber darauf, die großen Möglichlichkeiten von Vba zu nutzen unter Einbeziehung von der Schnelligkeit von Excelformeln.

Wenn du da ein Makro hast was sehr langsam läuft, zeig mal den Code, ggfs. kann man es beschleunigen.

Mein Plan ist, noch völlig offen ob er am Performanceproblem oder anderem scheitert, in einem Hilfsblatt „Kopie“, was du gar nicht in Excel einblenden kannst ohne Vba, die normale Autofilter-Funktion von Excel zu nutzen.

Für dich heißt das, du benutzt nur in Tabelle1 den nachgebauten Autofilter. Und wählst da wie in XL2002 gewohnt was aus. Die Auswahl wird ausgewertet durch Vba, dementsprechend quasi die Häkchen gesetzt im Blatt Kopie und dessen Autofilter.

Daraufhin wird dann im Blatt „Kopie“ von Excel gefiltert. Dann mu man nur noch, entsprechend der ausgeblendeten Zeilen iM Blatt „Kopie“, das Gleiche mit/in „tabelle1“ tun.

und wie gesagt, diese Filterung fehlt noch komplett.

Falls dann alles sehr zufriedenstellend funktioniert, kann man auch über Teilergebnis reden. Auch da unterscheiden sich 2002 und 2010.
In 2002 gibts da nur geschätzte 9 Wahlmöglichkeiten in Teilergebnis, in 2010 mehr und die haben andere Nummern.

Aber auch das ist lösbar, wie gesagt, Sache des Zeitaufwandes.

Gruß
Reinhard

Hallo Reinhard,

Wenn du da ein Makro hast was sehr langsam läuft, zeig mal
den Code, ggfs. kann man es beschleunigen.

vielen Dank, aber diese Makros sind nicht auf meinem PC bzw. meine eigenen (lahmen) Makros benutze ich aus anderen Gründen nicht mehr.
Wie du gemerkt hast, bin ich selbst über einfache Makros nicht hinausgekommen. Außerdem muß ich zuhause noch das Excel 2010 installieren; hier kann ich deine Beispielmappe nicht ausprobieren.
Warte bis dahin erstmal mit dem Programmieren.
Danke + Grüße