2017-08-10 243 views
1

我有多个过滤器(范围(“A5:I5”)),并想这些过滤器结合连续就像这样:VBA的Excel - 将多个自动筛选

Range("A5:I5").Select 
Selection.AutoFilter 

Range("A6:A500").AutoFilter Field:=1, Criteria1:="<>0" 
Range("B6:B500").AutoFilter Field:=2, Criteria1:="<>" 
Range("F6:F500").AutoFilter Field:=6, Criteria1:="yes", Operator:=xlOr, Criteria2:="=" 
Range("G6:G500").AutoFilter Field:=7, Criteria1:="yes", Operator:=xlOr, Criteria2:="=" 

但是他们似乎相互抵消,我的目标是,“是”过滤器仅过滤之前已过滤的数据。
如何“堆叠”过滤器?

回答

3

使它成为一个Range,如:

Range("A5:I5").Autofilter 
With Range("A6:I500") 
    .AutoFilter Field:=1, Criteria1:="<>0" 
    .AutoFilter Field:=2, Criteria1:="<>" 
    .AutoFilter Field:=6, Criteria1:="yes", Operator:=xlOr, Criteria2:="=" 
    .AutoFilter Field:=7, Criteria1:="yes", Operator:=xlOr, Criteria2:="=" 
End With 

而且尽量避免.Select,其不需要任何操作。

+0

真棒这个作品(将在几分钟内接受)。你可以看看在https://stackoverflow.com/questions/45608486/vba-autofilter-disable-cells-if-multiple-conditions-are-met?我无法弄清楚如何添加最终条件/标准 – dv3