I went ahead and used =RANDBETWEEN() to randomly generate a sample file of 80,000 rows of data. I then created a list of the top 20 state/district combinations. I filter the Criteria sheet and run the macro: Report_Filtered_Records it takes anywhere from 15 to 45 seconds to search through the 80,000 records. It's not as "elegant" as I'd like, but it does work. see if you can implement it:Option Explicit Public Dict_Fields Sub Report_Filtered_Records() Dim stat Dim nRows, R, rOut Dim strCountry, strState, strDistrict Dim KeyField Application.ScreenUpdating = False Sheets("Result").Range("A2:Z165000").ClearContents stat = Load_Dict_Fields() rOut = 1 nRows = Application.WorksheetFunction.CountA(Sheets("Raw Data").Range("A:A")) For R = 2 To nRows strCountry = Sheets("Raw Data").Cells(R, "A").Value strState = Sheets("Raw Data").Cells(R, "B").Value strDistrict = Sheets("Raw Data").Cells(R, "C").Value KeyField = strCountry & "." & strState & "." & strDistrict If (Dict_Fields.exists(KeyField)) Then rOut = rOut + 1 Sheets("Result").Range("A" & rOut & ":E" & rOut) = Sheets("Raw Data").Range("A" & R & ":E" & R).Value End If Next R Application.ScreenUpdating = True Sheets("Result").Select MsgBox "Reported " & rOut - 1 & " rows" End SubFunction Load_Dict_Fields() Dim R, nRows Dim strCountry, strState, strDistrict Dim KeyField Set Dict_Fields = CreateObject("Scripting.Dictionary") Dict_Fields.RemoveAll nRows = Application.WorksheetFunction.CountA(Sheets("Criteria").Range("A:A")) For R = 2 To nRows If (Sheets("Criteria").Cells(R, "A").EntireRow.Hidden = False) Then strCountry = Sheets("Criteria").Cells(R, "A").Value strState = Sheets("Criteria").Cells(R, "B").Value strDistrict = Sheets("Criteria").Cells(R, "C").Value KeyField = strCountry & "." & strState & "." & strDistrict If (Not Dict_Fields.exists(KeyField)) Then Dict_Fields.Add KeyField, Sheets("Criteria").Cells(R, "D").Value & "|" & Sheets("Criteria").Cells(R, "E").Value End If End If Next R Load_Dict_Fields = True End Function
Paul----------------------------------------- “Do all the good you can, By all the means you can, In all the ways you can, In all the places you can, At all the times you can, To all the people you can, As long as ever you can.” - John Wesley ----------------------------------------- From: mani bolla <bollam...@gmail.com> To: MS EXCEL AND VBA MACROS <excel-macros@googlegroups.com> Sent: Sunday, October 11, 2015 6:00 AM Subject: $$Excel-Macros$$ How to apply multiple filters based on multiple criteria Hi All, i am looking for VBA code for below objective there are three sheets1.Raw data 2.Criteria 3.ResultRaw data sheet has 5 columns ( country, state, district, name, age ) , 80 thousand rows, may be duplicate rows alsoCriteria sheet has 3 columns (country, state, district) , 20 rows. unique valuesi need to apply filters in raw data sheet with visible values of criteria sheet , if values are not found in raw data sheet , values of should highlight in another color in criteria sheet.what are the values found in raw data sheet (including duplicate rows) should copy and paste in results sheet.Request you to provide VBA code for this objective. Once again thanks for your support-- Are you =EXP(E:RT) or =NOT(EXP(E:RT)) in Excel? And do you wanna be? It’s =TIME(2,DO:IT,N:OW) ! Join official Facebook page of this forum @ https://www.facebook.com/discussexcel FORUM RULES 1) Use concise, accurate thread titles. Poor thread titles, like Please Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get quick attention or may not be answered. 2) Don't post a question in the thread of another member. 3) Don't post questions regarding breaking or bypassing any security measure. 4) Acknowledge the responses you receive, good or bad. 5) Jobs posting is not allowed. 6) Sharing copyrighted material and their links is not allowed. NOTE : Don't ever post confidential data in a workbook. Forum owners and members are not responsible for any loss. --- You received this message because you are subscribed to the Google Groups "MS EXCEL AND VBA MACROS" group. To unsubscribe from this group and stop receiving emails from it, send an email to excel-macros+unsubscr...@googlegroups.com. To post to this group, send email to excel-macros@googlegroups.com. Visit this group at http://groups.google.com/group/excel-macros. For more options, visit https://groups.google.com/d/optout. -- Are you =EXP(E:RT) or =NOT(EXP(E:RT)) in Excel? And do you wanna be? It’s =TIME(2,DO:IT,N:OW) ! Join official Facebook page of this forum @ https://www.facebook.com/discussexcel FORUM RULES 1) Use concise, accurate thread titles. Poor thread titles, like Please Help, Urgent, Need Help, Formula Problem, Code Problem, and Need Advice will not get quick attention or may not be answered. 2) Don't post a question in the thread of another member. 3) Don't post questions regarding breaking or bypassing any security measure. 4) Acknowledge the responses you receive, good or bad. 5) Jobs posting is not allowed. 6) Sharing copyrighted material and their links is not allowed. NOTE : Don't ever post confidential data in a workbook. Forum owners and members are not responsible for any loss. --- You received this message because you are subscribed to the Google Groups "MS EXCEL AND VBA MACROS" group. To unsubscribe from this group and stop receiving emails from it, send an email to excel-macros+unsubscr...@googlegroups.com. To post to this group, send email to excel-macros@googlegroups.com. Visit this group at http://groups.google.com/group/excel-macros. For more options, visit https://groups.google.com/d/optout.