VBA-Code für mehrere Filtereingaben in einer einzelnen Spalte unter Verwendung einer einzelnen Eingabebox

VBA-Code für mehrere Filtereingaben in einer einzelnen Spalte unter Verwendung einer einzelnen Eingabebox

Ich muss mein Excel mithilfe eines Makros filtern (mehrere Daten)

Bildbeschreibung hier eingeben

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.AutoFilterMethode übergeben müssen, während Sie gleichzeitig angeben Operator:=xlFilterValues.

Dies setzt Folgendes voraus:

  1. Ihre Daten liegen im Bereich, der die Zelle A1 umfasst. Wenn nicht, ändern Sie die letzte Zeile im Verfahren.
  2. Ihre Daten befinden sich auf Blatt1. Wenn nicht, ändern Sie die letzte Zeile im Verfahren.
  3. Sie möchten die Listenelemente durch Leerzeichen trennen. Wenn nicht, ändern Sie die Zeile mit sep = " "dem entsprechenden Inhalt.

verwandte Informationen