K20GH
K20GH

Reputation: 6281

Multiple Filtering in Excel VBA?

I'm trying to filter my data using 2 columns and 2 different filter requirements.

ActiveSheet.AutoFilterMode = False
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=5, Criteria1:="yes"
ActiveSheet.Range("E:E").AutoFilter Field:=1, Criteria1:="Low"

If I filter by either "yes" or "Low" separately it works. However, if I try and filter range K2-ZZ200 by "yes" and then Column E by "Low" it seems to hide everything.

How can I filter by both?

Upvotes: 8

Views: 79114

Answers (2)

K20GH
K20GH

Reputation: 6281

Almost. Managed to do this using an array. The Range does not need to be the same by the way.

     ActiveSheet.AutoFilterMode = False
    ActiveSheet.Range("$E$2:$ZZ$200").AutoFilter Field:=nice, Criteria1:="yes"
    ActiveSheet.Range("$E$2:$ZZ$200").AutoFilter Field:=1, Criteria1:=Array( _
    "Filter 1", ""Filter 2", "On "Filter 3", ""Filter 4", ""Filter 5"), Operator:=xlFilterValues

Upvotes: 0

Ryan
Ryan

Reputation: 8005

You have to use the same Range("$K$2:$ZZ$200") for both AutoFilter statements:

' Column A = Field 1
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=1, Criteria1:="yes"
' Column E = Field 5
ActiveSheet.Range("$K$2:$ZZ$200").AutoFilter Field:=5, Criteria1:="Low"

Also, you may need to set ActiveSheet.AutoFilterMode = True, but I'm not entirely sure.

Upvotes: 6

Related Questions