I was trying to find if we can use "If" in array to filter multiple columns in a single code. For example, I've data in 2 columns & to get result, I've to use filter twice.
First Step to filter with Apple in column 7 & today-3 & before in column 8
ActiveSheet.Range("A1:W100000").AutoFilter Field:=7, Operator:=xlFilterValues, Criteria1:="Apple"
ActiveSheet.Range("A1:W100000").AutoFilter Field:=8, Operator:=xlFilterValues, Criteria1:="=>"& Date-3)
Second Step to filter with Banana in column 7 & today-7 & before in column 8
ActiveSheet.Range("A1:W100000").AutoFilter Field:=7, Operator:=xlFilterValues, Criteria1:="Banana"
ActiveSheet.Range("A1:W100000").AutoFilter Field:=8, Operator:=xlFilterValues, Criteria1:="=>"& Date-7)
Is it possible to get filter result in one go by using "If" as an array like "(If field 7 = Apple, fields 8 = "=>"& Date-3) and (If field 7 = Banana, fields 8 = "=>"& Date-7)"?
Please help
Sub Get_Value()
Sheets.ADD After:=Sheets(Sheets.count)
ActiveSheet.Name = "Sheet2"
Worksheets("Sheet1").Select
Worksheets("Sheet1").AutoFilterMode = False
Application.DisplayAlerts = False
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=7, Criteria1:="Apple"
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=8, Criteria1:="<=" & Date - 3
If (ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).count - 1) = 0 Then
MsgBox "There are no values found"
Else
Worksheets("Sheet1").Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Worksheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End If
Worksheets("Sheet1").Select
Worksheets("Sheet1").AutoFilterMode = False
Application.DisplayAlerts = False
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=7, Criteria1:="Banana"
ActiveSheet.Range("A1:AZ100000").AutoFilter Field:=8, Criteria1:="<=" & Date - 7
If (ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).count - 1) = 0 Then
MsgBox "There are no values found"
Else
ActiveSheet.Range("G2", Range("G" & Rows.count).End(xlUp)).SpecialCells(xlCellTypeVisible).Copy
Worksheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End If
End Sub