我需要使用宏过滤我的 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 = " "
为其他内容。