With the below Code, it needs all 3 fields (MY, Order, Quantity) to be entered a value to populate final filtered data. I want the code to have flexibility to run with either 1 ,2 or 3 selections (i.e if Only MY and Order is selected or Just MY or all three) Please help!
----------------------------------------------------------------------------------------------------------
Sub Filter_Data()
Dim All_Data_sh As Worksheet
Dim Filter_sh As Worksheet
Dim Output_sh As Worksheet
Set All_Data_sh = ThisWorkbook.Sheets("All_Data")
Set Filter_sh = ThisWorkbook.Sheets("Filter")
Set Output_sh = ThisWorkbook.Sheets("Output")
Output_sh.UsedRange.Clear
All_Data_sh.AutoFilterMode = False
Dim MY() As String
Dim Order() As String
Dim Quantity() As String
Dim n As Integer
n = Application.WorksheetFunction.CountA(Filter_sh.Range("A:C")) - 2
ReDim MY(n) As String
ReDim Order(n) As String
ReDim Quantity(n) As String
Dim i As Integer
For i = 0 To n
MY(i) = Filter_sh.Range("A" & i + 2)
Order(i) = Filter_sh.Range("B" & i + 2)
Quantity(i) = Filter_sh.Range("C" & i + 2)
Next i
All_Data_sh.UsedRange.AutoFilter 1, MY(), xlFilterValues
All_Data_sh.UsedRange.AutoFilter 2, Order(), xlFilterValues
All_Data_sh.UsedRange.AutoFilter 3, Quantity(), xlFilterValues
All_Data_sh.UsedRange.Copy Output_sh.Range("A1")
All_Data_sh.AutoFilterMode = False
MsgBox ("Data Filtered")
End Sub
Bookmarks