Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA Excel中基于多个条件语句触发多个筛选器?_Excel_Vba - Fatal编程技术网

如何在VBA Excel中基于多个条件语句触发多个筛选器?

如何在VBA Excel中基于多个条件语句触发多个筛选器?,excel,vba,Excel,Vba,假设在Excel的Sheet1中,有4个复选框Form控件具有一些名称,例如Metric1、Metric2、Metric3和Metric4 同一张表中有4个单元格,比如A14、A15、A16和A17,它们使用宏与上述复选框关联,例如Metric1 A14、Metric2 A15、Metric3 A16和Metric4 A17 现在,如果选择一个或多个复选框,相应的单元格将显示TRUE,如果复选框未选中,则将显示FALSE 有第二张表2,有一列指标,包含所有4个值,即Metric1、Metric2

假设在Excel的Sheet1中,有4个复选框Form控件具有一些名称,例如Metric1、Metric2、Metric3和Metric4

同一张表中有4个单元格,比如A14、A15、A16和A17,它们使用宏与上述复选框关联,例如Metric1 A14、Metric2 A15、Metric3 A16和Metric4 A17

现在,如果选择一个或多个复选框,相应的单元格将显示TRUE,如果复选框未选中,则将显示FALSE

有第二张表2,有一列指标,包含所有4个值,即Metric1、Metric2、Metric3和Metric4。假设我在表1中选择了公制1和公制4的复选框。这将使单元格A14和A17变为TRUE。现在,基于那些为真的单元格,我只想看到度量列中过滤的度量1和度量4

如何为这个问题编写VBA代码?请帮忙

我尝试使用多个IF条件,但问题是,过滤器采用最后一个IF条件的值

AutoFilter接受数组以同时过滤多个值。例如,未测试:

If Sheets("Sheet1").Range("A14") = True Then _
   Sheets("Sheet2").Range("A1").AutoFilter Field:=1, Criteria1:= "Option1"

If Sheets("Sheet1").Range("A15") = True Then _
   Sheets("Sheet2").Range("A1").AutoFilter Field:=1, Criteria1:= "Option2"

If Sheets("Sheet1").Range("A16") = True Then _
   Sheets("Sheet2").Range("A1").AutoFilter Field:=1, Criteria1:= "Option3"

If Sheets("Sheet1").Range("A17") = True Then _
   Sheets("Sheet2").Range("A1").AutoFilter Field:=1, Criteria1:= "Option4"

问题的哪些部分在工作,哪些部分不在工作?最后一部分,根据为真的单元格,如果选中复选框,则应过滤名为Metric的字段,仅显示单元格在表1中显示为真的那些指标。我们有复选框Form control和相关单元格A14:A17。在Sheet2中,我们有Metrics ColumnField请编辑问题的代码-我是VBA新手,所以请不要否决我的查询。如果有人能提出解决这个问题的建议,我将不胜感激。谢谢我刚刚编辑了最后一部分,瞧!它起作用了:万分感谢!SheetsSheet2.RangeA1.AutoFilter字段:=1,准则1:=arr,运算符:=xlFilterValues
arr = Array( IIf([Sheet1!A14], "Option1", ""), IIf([Sheet1!A15], "Option2", ""), _
             IIf([Sheet1!A16], "Option3", ""), IIf([Sheet1!A17], "Option4", ""))

[Sheet2!A:A].AutoFilter 1, arr, xlFilterValues