Ich muss mein Excel mithilfe eines Makros filtern (mehrere Daten)
Ich möchte die „Notenspalte“ (wie im Bild) mit A, B und C filtern (aber diese A, B und C sind nicht eingeschränkt, manchmal brauche ich nur die Notendaten „B“ und C) und ich möchte diese Noten zum Filtern mithilfe eines Eingabefelds eingeben.
Kann mir jemand mit dem Code helfen?
Wenn die Eingabe als "A+B+C" oder als "AB C" erfolgen kann, ist das sehr hilfreich
Hier sind die Beispieldaten, durch Leerzeichen getrennt:
Name class Grade Liam 1 A Noah 2 b William 3 c James 1 d Olive 2 e Benjamin 3 f Elijah 1 A Lucas 2 b Mason 3 c Logan 1 d Alexander 2 e Ethan 3 f Jacob 1 A Michael 2 b Daniel 3 c Henry 1 d Jackson 2 e Sebastian 3 f Aiden 1 A Emma 2 b Olivia 3 c Ava 1 d Isabella 2 e
Antwort1
So wie ich Ihre Frage verstehe, möchten Sie zum Filtern der Daten nicht das Dropdown-Menü „Autofilter“ verwenden. Stattdessen möchten Sie eine Liste von Elementen in ein Eingabefeld eingeben und dann die Daten nach diesen Elementen filtern.
Das geht mit diesem Code:
Sub FilterListUsingInputBox()
Dim sep As String
Dim filter As String
Dim filters() As String
sep = " "
filter = InputBox("Enter a list of 1-n filter items, separated by a space")
If filter = "" Then 'no filter was entered
Exit Sub
End If
filters = Split(filter, sep)
Sheet1.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:=filters, Operator:=xlFilterValues
End Sub
Wichtig hierbei ist, dass Sie die Eingabe zuerst mit in ein Array aufteilen und Split()
dieses dann an die Range.AutoFilter
Methode übergeben müssen, während Sie gleichzeitig angeben Operator:=xlFilterValues
.
Dies setzt Folgendes voraus:
- Ihre Daten liegen im Bereich, der die Zelle A1 umfasst. Wenn nicht, ändern Sie die letzte Zeile im Verfahren.
- Ihre Daten befinden sich auf Blatt1. Wenn nicht, ändern Sie die letzte Zeile im Verfahren.
- Sie möchten die Listenelemente durch Leerzeichen trennen. Wenn nicht, ändern Sie die Zeile mit
sep = " "
dem entsprechenden Inhalt.