我有一个我用来根据输入到多个单元格的数据自动过滤器的宏。单元格A2包含文本" Enter Zip Code",邮政编码将在B2中输入。单元格A4包含文本" Enter Service(S)",该服务将在B4,B5,B6和B7中输入。
如果我离开细胞B4,B5,B6和B7空白,则过滤器将不会返回任何数据。但是,如果这些单元格为空白,我试图让过滤器选择全部。我最初将Cell B4作为5个可能的选择,我使用以下代码选择了全部如果留为空白:
My_Range.AutoFilter Field:=11, Criteria1:="=" & Range("B2").Value
My_Range.AutoFilter Field:=1, Criteria1:=IIf(Trim(Range("B4").Value) = "", "<>", "=") & Range("B4").Value
但是,我希望根据输入的数据输入这些单元格(B4,B5,B6,B7)来过滤各种组合。为此,我将代码更改为以下内容:
My_Range.AutoFilter Field:=11, Criteria1:="=" & Range("B2").Value
My_Range.AutoFilter Field:=1, Criteria1:=Array(Range("B4").Value, Range("B5").Value, Range("B6").Value, Range("B7").Value), Operator:=xlFilterValues
此代码为我带来了理想的结果,但是如果单元格为空白,则过滤器不会返回任何内容,因为它正在搜索该范围内"服务"列中的空单元格。
是否有一种方法可以使用该数组作为标准,但请选择全部如果空白?
只需测试您要捕获的条件:
If Len([B4] & [B5] & [B6] & [B7]) = 0 Then
My_Range.AutoFilter Field:=1
Else
My_Range.AutoFilter Field:=1, Criteria1:=Array(Range("B4").Value, Range("B5").Value, Range("B6").Value, Range("B7").Value), Operator:=xlFilterValues
End If