Autofilter-Auswahlliste zurückgeben
03.06.2020 12:32:48
Zacharias
ich hätte eine Frage zu den Autofiltern.
Ich habe eine Userform in der ich 52 Listboxen für alle Autofilter eines Blattes, auf der Fläche verteilt habe. Die Listboxen fülle ich mit den duplikatfreien Werten der jeweiligen Spalte.
Im Ergebnis sieht der Nutzer also das gleiche, als würde er in einer gefilterten Tabelle die einzelnen Spalten-Autofilter anklicken, wobei man dort nur die noch verfügbaren Werte angezeigt bekommt. Das schöne an dieser Darstellung ist aber, daß man zweidimensional sämtliche noch verfügbaren Distinct-Werte sofort in den Listboxen sieht und das in einer einzigen Userform, was bei so vielen Attributen die Transparenz enorm erhöht und von den Benutzern begeistert aufgenommen wurde.
Ein Linksklick in eine Listbox filtert im Blatt auf den gewählten Wert in der entsprechenden Spalte, Ein Rechtsklick hebt den Filter in dieser Spalte wieder auf.
Nach jedem Filtern kopiere ich das Blatt in welchem gefiltert wird, in eine weiteres Blatt,
wobei ich die redundanten Zellwerte in jeder Spalte eliminiere, um anschließend mit diesen eindeutigen Werten wieder sämtliche Listboxen zu füllen.
Das Eliminieren der Doppelwerte erledige ich wie folgt:
lngLastRow = GET_LAST_ROW(wksTOOL_FILTERRESULT)
With wksTOOL_FILTERRESULT
For i = 1 To intLastCol
.Range(.Cells(1, i), .Cells(lngLastRow, i)).RemoveDuplicates Columns:=1, Header:=xlYes
Next i
End With
Im Filterblatt existieren aktuell über 17.000 Datensätze (die maximale Anzahl unterschiedlicher Werte liegt bei unter 3.000).
Das Klicken, Filtern, Distincten, Listboxen aktualisieren klappte wunderbar und auch recht zügig.
Nun wollte ich noch 3 weitere Attribute als Listboxen aufnehmen, die mit sehr langen Zeichenketten gefüllt sind. Es handelt sich um Bemerkungen in denen bis zu 510 Zeichen stehen.
Ich vermute, durch die Länge der Zeichenketten (?), dauert die RemoveDuplicates-Methode bei diesen Spalten wesentlich länger, als bei den anderen 49 Spalten.
Daher suche ich nach eine schnelleren Methode die Duplikate zu eliminieren.
(Collections oder Dictionarys zu füllen und dann in die Spalte zu schreiben, war übrigens langsamer, als die RemoveDuplicates-Methode.)
Ich frage mich nun Folgendes:
Wenn ich den Autofilter aktiviere, zeigt mir doch Excel ohne jeglichen Zeitverzug als Auswahl die
duplikatfreien Zellinhalte an (begrenzt auf 10.000 unterschiedliche Werte).
Ist es möglich an diese Liste des Autofilters heranzukommen?
Dann würde die RemoveDuplicates-Methode überflüssig und die duplikatfreie Tabelle wäre noch viel schneller erzeugt.
Ich bin Euch wie immer für jeden zielführenden Hinweis dankbar und wünsche allen einen schönen Tag.
Viele Grüße
Zacharias