具有多个标准的高级过滤器

时间:2017-06-08 22:55:33

标签: excel vba excel-vba

我希望结合两个高级过滤器,似乎无法正确使用它。

目标是仅向下过滤包含列表中的FIN和列表中的userID的行。以下是单独的过滤器。

当我按顺序运行它们时,只应用最后一个过滤器。

'   Filter by FINs
LastRow2 = Sheets("FINs").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Data").Columns("B:B").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Sheets("FINs").Range("A1:A" & LastRow2), Unique:=False
'   Filter by userID
LastRow3 = Sheets("Users").Cells(Rows.Count, 1).End(xlUp).Row
Sheets("Data").Columns("C:C").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Sheets("Users").Range("A1:A" & LastRow3), Unique:=False

谢谢!

1 个答案:

答案 0 :(得分:0)

我遇到类似AutoFilter的问题,然后传入数组(FIN 1,FIN 2,..)和数组(用户1,用户2,...),但它没有完全正常工作。

例如,

我希望列表只有在Col A中有FIN 1,然后Col B必须是用户1 但结果却不是,只要Col A有FIN 1,它就会出现在列表中。自动过滤器将返回这两个阵列之间可能的所有组合。

我建议添加一个唯一列,然后使用Unique列进行过滤。 然后使用AutoFilter with Array过滤如下:

ActiveSheet.Range("$A$1:$C$7").AutoFilter Field:=3, 
    Criteria1:=Array("FIN 2|User 2", "FIN 4|User 4", "FIN 5|User 5", "FIN 6|User 6"), 
    Operator:=xlFilterValues

enter image description here