我有一个宏用于根据输入到多个单元格的数据自动筛选范围。单元格A2包含文本“输入邮政编码”,邮政编码将在B2中输入。单元格A4包含文本“输入服务”,服务将在B4,B5,B6和B7中输入。
如果我将单元格B4,B5,B6和B7留空,则过滤器不会返回任何数据。但是,如果这些单元格为空,我试图让过滤器全部选中。我最初使用5个可能的选项将单元格B4作为下拉列表,并且我使用以下代码选择所有如果留空:
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
此代码为我提供了所需的结果,但如果单元格保留为空白,则过滤器不返回任何内容,因为它在范围的“服务”列中搜索空单元格。
有没有办法将数组用于条件,但如果空白则选择全部?
答案 0 :(得分:0)
只测试你想要陷入的状况:
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