使用單一輸入框在單列中進行多個篩選器輸入的VBA程式碼

使用單一輸入框在單列中進行多個篩選器輸入的VBA程式碼

我需要使用巨集(多個資料)過濾我的Excel

在此輸入影像描述

我喜歡用 A、B 和 C 過濾「成績列」(如圖所示)(但這些 A、B 和 C 不受約束,有時我只需要「B 和 C」成績資料)並且我喜歡輸入這些使用輸入框過濾器的等級。

任何人都可以幫我解決程式碼嗎

如果輸入可以作為“A+B+C”或“AB C”給出,將會非常有幫助

以下是範例數據,以空格分隔:

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

答案1

據我了解您的問題,您不想使用“自動過濾器”下拉列表來過濾資料。相反,您想要在輸入框中鍵入項目列表,然後過濾這些項目的資料。

您可以使用以下程式碼來做到這一點:

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

這裡要注意的是,您必須先將輸入拆分為數組,然後Split()將其傳遞給Range.AutoFilter方法,同時指定Operator:=xlFilterValues.

這假設:

  1. 您的資料位於包含儲存格 A1 的範圍內。如果不是,請更改過程中的最後一行。
  2. 您的資料位於 Sheet1 上。如果不是,請更改過程中的最後一行。
  3. 您想要使用空格來分隔清單項目。如果不是,請將顯示其他內容的行變更sep = " "為其他內容。

相關內容