我正在编写一个excel宏,它需要从特定列获取用户的输入,然后根据用户输入过滤该值。
注意:
1)输入应提示列表框,该列表框将显示该列中存在的所有值。 2)用户可以选择多个值一个或多个。 3)根据用户输入过滤工作表并显示结果。
Macro的专家可以提供建议。
我试过,因为来自用户的输入值是动态的(一个或多个选择)我正面临挑战。
范围(“B2”)。自动筛选字段:= 2,条件1:=数组(“Selection1”,“Selection2”),运算符:= xlFilterValues
答案 0 :(得分:2)
您的Range
需要针对要过滤的整个表格,并使用Field
参数指定要过滤的列。例如Range("A1:D50").AutoFilter Field:=2
会过滤从列格A1
到D50
的表格的B列。
在AutoFilter行之前设置过滤器值,这也可以让您更轻松地构建动态要素以指定过滤器值。 e.g。
filterValues = Array("Criteria1","Criteria2", "Criteria3")
Range("A1:D50").AutoFilter Field:=2, Criteria1:=filterValues, Operator:=xlFilterValues
为了从用户那里获取输入以填充filterValues
数组,您需要为此构建用户表单。
答案 1 :(得分:0)
为了在自动过滤器中有更多标准,您应该单独给它们。我没有看到excel将它作为一个数组。分别是这样的:
Sub Makro2()
ActiveSheet.Range("$A$1:$B$8").AutoFilter Field:=1, Criteria1:="123"
ActiveSheet.Range("$A$1:$B$8").AutoFilter Field:=2, Criteria1:="122"
End Sub