PDA

View Full Version : Autofilter Macro with 3 criteria in 1 field



snowbounduk
11-23-2010, 05:16 AM
I have the following code which I am using to apply filters to 3 fields. In field 21 I currently have 2 criteria and I need to add a third, PR2 Interim. I have tried adding Criteria3 without success.

I now understand I can only use 2 criteria using my current method and that an Array may be required.

Could anyone advise on how I apply the 3 crieria using an Array?

Thanks in anticipation....
Sub SlipNoIssuePP2()
'
' SlipNoIssuePP2 Macro
'
'
Sheets("Slip No Issue PP2").Select
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Range("A1").Select
Sheets("All MS Checks").Select
Selection.AutoFilter Field:=20, Criteria1:=">0", Operator:=xlAnd
Selection.AutoFilter Field:=10, Criteria1:="<>I*", Operator:=xlAnd
Selection.AutoFilter Field:=21, Criteria1:="PR1", Operator:=xlOr, _
Criteria2:="Pre-PR1"
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Slip No Issue PP2").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("All MS Checks").Select
Selection.AutoFilter Field:=10
Selection.AutoFilter Field:=21
Selection.AutoFilter Field:=20
Range("A1").Select
End Sub

Bob Phillips
11-23-2010, 05:17 AM
ADd one autofilter with 2 criteria, and a second with the third.

snowbounduk
11-23-2010, 06:29 AM
I have tried adding a second autofilter with the third criteria but it then only shows me lines where the third criteria is met and not the first two aswell.

Sheets("All MS Checks").Select
Selection.AutoFilter Field:=20, Criteria1:=">0", Operator:=xlAnd
Selection.AutoFilter Field:=10, Criteria1:="<>I*", Operator:=xlAnd
Selection.AutoFilter Field:=21, Criteria1:="PR1", Operator:=xlOr, _
Criteria2:="Pre-PR1"
Selection.AutoFilter Field:=21, Criteria1:="PR2 Interim", Operator:=xlOr
Range("A1").Select

I have also tried the following with the same results:

Sheets("All MS Checks").Select
Selection.AutoFilter Field:=20, Criteria1:=">0", Operator:=xlAnd
Selection.AutoFilter Field:=10, Criteria1:="<>I*", Operator:=xlAnd
Selection.AutoFilter Field:=21, Criteria1:="PR1", Operator:=xlOr, _
Criteria2:="Pre-PR1"
Selection.AutoFilter Field:=21, Criteria1:="PR2 Interim", Operator:=xlAnd
Range("A1").Select

I have also tried the following but get a run time error:

Sheets("All MS Checks").Select
Selection.AutoFilter Field:=20, Criteria1:=">0", Operator:=xlAnd
Selection.AutoFilter Field:=10, Criteria1:="<>I*", Operator:=xlAnd
Selection.AutoFilter Field:=21, Criteria1:="PR1", Operator:=xlOr, _
Criteria2:="Pre-PR1"
Selection.AutoFilter Field:=21, Criteria3:="PR2 Interim", Operator:=xlOr
Range("A1").Select

Am I doing something silly?

Bob Phillips
11-23-2010, 07:35 AM
Post your actual workbook please.

snowbounduk
11-23-2010, 07:51 AM
No can do, too much sensitive info in it!

I have a work around. I've added another column with an IF/OR statement, looking at specific criteria and then use Yes/No in that field in the AutoFilter.

Thanks anyway