Using this code from this post is there any way to use multiple columns for the criteria filter? I'm using dropdowns on a vba form for the user to select the filter criteria from, placing the result in C2 for the first dropdown (from the code), C3 for the second dropdown and so forth then running the macro from a button.
Code from the post:
Option Explicit
Sub Macro2()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng4 As Range
Set ws1 = Worksheets("Data")
Set ws2 = Worksheets("Criteria")
Set ws3 = Worksheets("Output")
Set rng1 = ws1.Range(ws1.Range("A3"), ws1.Range("G" & Rows.Count).End(xlUp))
ThisWorkbook.Names.Add Name:="myData", RefersTo:=rng1
Set rng2 = ws2.Range(ws2.Range("C1"), ws2.Range("C" & Rows.Count).End(xlUp))
ThisWorkbook.Names.Add Name:="myCriteria", RefersTo:=rng2
Set rng3 = ws3.Range(ws3.Range("A2"), ws3.Range("G" & Rows.Count).End(xlUp))
Set rng4 = ws3.Range("A3")
rng3.ClearContents 'clear the Output worksheet
' do the filter
ws1.Range("myData").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=ws2.Range("myCriteria"), _
CopyToRange:=ws3.Range("A2"), _
Unique:=False
' Sort the filtered data
With ws3.Range("A3").CurrentRegion
.Sort Key1:=.Range("C3"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End With
With rng3
.WrapText = False
.Columns("A:G").AutoFit
End With
End Sub
--------------------------------------------------------------------------------
Code from the post:
Option Explicit
Sub Macro2()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim rng4 As Range
Set ws1 = Worksheets("Data")
Set ws2 = Worksheets("Criteria")
Set ws3 = Worksheets("Output")
Set rng1 = ws1.Range(ws1.Range("A3"), ws1.Range("G" & Rows.Count).End(xlUp))
ThisWorkbook.Names.Add Name:="myData", RefersTo:=rng1
Set rng2 = ws2.Range(ws2.Range("C1"), ws2.Range("C" & Rows.Count).End(xlUp))
ThisWorkbook.Names.Add Name:="myCriteria", RefersTo:=rng2
Set rng3 = ws3.Range(ws3.Range("A2"), ws3.Range("G" & Rows.Count).End(xlUp))
Set rng4 = ws3.Range("A3")
rng3.ClearContents 'clear the Output worksheet
' do the filter
ws1.Range("myData").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=ws2.Range("myCriteria"), _
CopyToRange:=ws3.Range("A2"), _
Unique:=False
' Sort the filtered data
With ws3.Range("A3").CurrentRegion
.Sort Key1:=.Range("C3"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End With
With rng3
.WrapText = False
.Columns("A:G").AutoFit
End With
End Sub
--------------------------------------------------------------------------------