我需要使用巨集(多個資料)過濾我的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
.
這假設:
- 您的資料位於包含儲存格 A1 的範圍內。如果不是,請更改過程中的最後一行。
- 您的資料位於 Sheet1 上。如果不是,請更改過程中的最後一行。
- 您想要使用空格來分隔清單項目。如果不是,請將顯示其他內容的行變更
sep = " "
為其他內容。