Excel宏用于多个过滤器

时间:2016-07-27 07:26:44

标签: excel vba excel-vba

我正在编写一个excel宏,它需要从特定列获取用户的输入,然后根据用户输入过滤该值。

注意:

1)输入应提示列表框,该列表框将显示该列中存在的所有值。 2)用户可以选择多个值一个或多个。 3)根据用户输入过滤工作表并显示结果。

Macro的专家可以提供建议。

我试过,因为来自用户的输入值是动态的(一个或多个选择)我正面临挑战。

范围(“B2”)。自动筛选字段:= 2,条件1:=数组(“Selection1”,“Selection2”),运算符:= xlFilterValues

2 个答案:

答案 0 :(得分:2)

您的Range需要针对要过滤的整个表格,并使用Field参数指定要过滤的列。例如Range("A1:D50").AutoFilter Field:=2会过滤从列格A1D50的表格的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