Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1752to1756
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

Datentabelle Filtern aus Listbox

Datentabelle Filtern aus Listbox
14.04.2020 14:07:29
Christoph
Liebe Gemeinde,
ich würde gerne eine Datentabelle mit den Kriterien Filtern, die in einer Listbox "angehakt" werden.
Konkret geht es darum, dass die Tabelle nach den Jahren gefiltert werden soll, die in der Userform angehakt worden sind.
Das Laden der Userform und auch das auswählen funktioniert.
Was nicht funktioniert ist das Filtern selbst. Es werden einfach alle Werte aus der Tabelle gefiltert, egal, ob ich ein Jahr oder mehre Jahre anklicke.
Der Code mit dem das Userform geladen und die Listbox mit Daten versehen wird:

Private Sub UserForm_Initialize()
Dim T_Blattname, Ctrl, Wertebereich As String
T_Blattname = ActiveSheet.Name
Debug.Print T_Blattname
Wertebereich = "D6:D437"
Ctrl = "Listbox1"
Dim objDic As Object
Dim Bereich As Range
Dim Zelle As Range
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets(T_Blattname)
Set Bereich = .Range(Wertebereich) 'relevanten Bereich ermitteln
End With
For Each Zelle In Bereich
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
UserForm1.ListBox1.List = objDic.keys
Wertebereich = "C6:C437"
Ctrl = "Listbox2"
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets(T_Blattname)
Set Bereich = .Range(Wertebereich) 'relevanten Bereich ermitteln
End With
For Each Zelle In Bereich
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
Next
UserForm1.ListBox2.List = objDic.keys
End Sub

Und hier der Code mit dem ich versuche den Filter zu setzen:

Private Sub CommandButton1_Click()
Dim lngIndex As Long, ialngCount As Long
Dim avntMonth() As Variant
With ListBox1
If .ListIndex >= 0 Then
For lngIndex = 0 To .ListCount - 1
If .Selected(lngIndex) Then
ReDim Preserve avntMonth(ialngCount)
avntMonth(ialngCount) = .List(lngIndex)
ialngCount = ialngCount + 1
End If
Next
ActiveSheet.ListObjects("Datenbereich_A3").Range.AutoFilter Field:=4, _
Criteria1:=avntMonth, Operator:=xlFilterValues
End If
End With
End Sub

Hat jemand eine Idee warum das nicht klappt?
Beispielmappe: https://www.herber.de/bbs/user/136693.xlsm
Vielen Dank!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datentabelle Filtern aus Listbox
14.04.2020 16:37:13
Christoph
Hallo Herbert,
vielen Dank, das ist schon ein Teilstück des Weges.
Leider kann ich nur ein Jahr auswählen.
Wenn ich meinetwegen 2015 und 2011 auswähle wird lediglich 2015 angezeigt.
Es sollen aber 2015 und 2011 angezeigt werden.
Grüße
CB
AW: Datentabelle Filtern aus Listbox
14.04.2020 16:52:29
Herbert
Hallo Christoph,
es wäre halt schön, wenn man das immer gleich wüsste, dass eine Mehrfachauswahl gewünscht wird! Sollen evtl. auch noch mehr als 2 Jahre ausgewählt werden können?
Servus
Anzeige
AW: Datentabelle Filtern aus Listbox
14.04.2020 17:34:39
Christoph
Hallo Herbert,
da hast du recht, das hätte ich deutlicher machen können. Ich dachte die Verwendung von des Plural reicht aus ;-)
Hast du trotzdem eine Idee?
Grüße
CB
AW: Datentabelle Filtern aus Listbox
14.04.2020 17:37:10
Herbert
Hallo Christoph,
nun hast du wieder recht, denn "wer lesen kann, ist echt im Vorteil"! Sorry, das hatte ich übersehen!
Servus
AW: Datentabelle Filtern aus Listbox
14.04.2020 17:44:44
Christoph
Kein Problem....
ich bin auch Schnellleser und Schnellschreiber :-)
Der Punkt an dem ich hänge ist glaube ich der, dass es in der Filtersyntax (aus einem anderen Teil der Tabelle, also nicht dem Beispiel)
ActiveSheet.ListObjects(Datenbereich_Name).Range.AutoFilter Field:=2, Criteria1:= _
Array("0", "1", "2", "3", "4"), _
Operator:=xlFilterValues
Dass ich das Array, das ich über die Listbox fülle, nicht an die fett gedruckte Stelle im Code bekomme....
Grüße
CB
Anzeige
AW: Datentabelle Filtern aus Listbox
14.04.2020 18:54:35
Herbert
Hallo Christoph,
den Weg über den Autofilter habe ich nicht hin bekommen. Aber als Alternative hätte ich "Zeilen ausblenden"! Es macht genau das was du willst, nur auf einem anderen Weg. Und du kannst so viele Kriterien auswählen wie du willst. Schau es dir mal an.
https://www.herber.de/bbs/user/136716.xlsm
Servus
AW: Datentabelle Filtern aus Listbox
14.04.2020 19:16:55
Christoph
Wunderbar,
vielen Dank, damit kann ich weiterarbeiten!
Es ist ja nur ein Teilproblem der Sache.
Es geht darum große Tabellen, die oft eine unterschiedliche Struktur haben, von dem User so einzudampfen, dass daraus ein "lesbares" Diagramm erstellt werden kann.
In der Vorgängerversion der Datei habe ich das immer so gemacht, dass ich über eine ComboBox Teile des Diagramms, also bestimmt Balken oder Linien aus und eingeblendet habe.
Das funktioniert gut, ist aber was die mögliche Auswahl der Dimensionen aus den vorhandenen Daten begrenzt ist.
Meine Idee war, über die Userform die Daten so zusammenzufiltern, dass sie als Grundlage für ein Diagramm dienen kann. Also im konkreten Fall der Beispieldatei meinetwegen die Aufenthaltsdauer von "4-6 Jahren" und "8-10 Jahren" für die Kreise "Hildesheim", "Schaumburg" und "Harburg" und für die Jahre "2018", "2014" und "2011".
Die so zusammengefilterte Tabelle würde ich dann als Ursprung für das Diagramm nehmen.
Soweit mein Vorhaben.....
Vielleicht hast du ja auch noch eine andere Idee wie ich das realisieren kann.
Vielen Dank und viele Grüße
CB
P.S. Das mit dem Ausblenden ist gut, der Filter macht aber glaube ich nichts anderes ...
Anzeige
AW: Datentabelle Filtern aus Listbox
15.04.2020 10:36:40
Herbert
Hallo Christoph,
nun habe ich doch noch eine Filtermöglichkeit gefunden! Du musst zwar einen Filter nach dem Anderen anklicken, doch das dürfte ja kein Problem darstellen.
https://www.herber.de/bbs/user/136739.xlsm
Servus
AW: Datentabelle Filtern aus Listbox
15.04.2020 11:27:25
Christoph
Hallo Herbert,
das ist ja schön, wobei doch irgendwie kompliziert. Diese Umwandlung in Text....
Ich war eben auch schon dicht dran, auf die Idee mit dem Text bin ich aber noch nicht gekommen. Ich habe immer versucht das array in den Filter zu integrieren.
Das mit dem in Text umwandeln ist doppelt doof, weil auch die Regionennamen eigentlich Nummern sind, die über einen Sverweis aus einem anderen Tabellenblatt kommen.
so hat es dann geklappt....
Private Sub filter_test()
Dim Text(2) As String
Text(0) = "2011"
Text(1) = "2012"
Text(2) = "2013"
ActiveSheet.ListObjects("Datenbereich_A3").Range.AutoFilter Field:=4, Criteria1:= _
Text(), Operator:=xlFilterValues
End Sub
Grundsätzlich geht das aber so und vielleicht bekomme ich es ja hin das alles in einer Userform zusammenzubringen.... Vielen Dank
CB
Anzeige
AW: Datentabelle Filtern aus Listbox
15.04.2020 12:23:13
Herbert
Hallo Christoph,
wenn du es dann fertig hast, würde mich dein Ergebnis auch interessieren, deshalb sende es mir bitte zu: hag at excelhelper Punkt de
Danke.
Servus
AW: Datentabelle Filtern aus Listbox
15.04.2020 13:28:39
Christoph
Hallo Herbert,
es funktioniert auch ohne den Umweg über den Text... Auch mit den Regionen....
Ich habe die Variable als String deklariert statt als Variant.
Private Sub CommandButton4_Click()
Dim lngIndex As Long, ialngCount As Long
Dim Jahr() As String 'variant
'Dim avntMonth() As String 'variant
With ListBox1
If .ListIndex >= 0 Then
For lngIndex = 0 To .ListCount - 1
If .Selected(lngIndex) Then
ReDim Preserve Jahr(ialngCount)
Jahr(ialngCount) = .List(lngIndex)
ialngCount = ialngCount + 1
End If
Next
ActiveSheet.ListObjects("Datenbereich_A3").Range.AutoFilter Field:=4, _
Criteria1:=Jahr, Operator:=xlFilterValues
End If
End With
End Sub

https://www.herber.de/bbs/user/136750.xlsm
Jetzt muss ich es nur noch hinbekommen daraus eine Grafik zu machen. Was dadurch nochmal deutlich erschwert wird, weil die Vorgabe des Tabellenkopfes so streng ist. Da hängt eine verbundene Zelle in der "Prozent" steht direkt über den Spalten. Die Kategorien sind noch eine Zeile weiter oben.
Zumal ich ungefähr 50 von diesen Tabellen habe, die nicht selten auch ganz unterschiedliche Strukturen aufweisen....
Wenn du da eine Idee hast wäre ich froh!
Grüße
CB
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige