VBA Advanced Filter - The FASTEST way to Copy and Filter Data
Vložit
- čas přidán 2. 06. 2024
- The Advanced Filter is the fastest way to copy and filter data in Excel VBA.
And that's not all...
It requires less code that any other method.
It requires no extra code to select or sort columns - all the other methods require a lot of extra code to do this.
It automatically formats the destination cells to match the source. If you use other methods then you need to create extra code to do this.
In this video this video I am going to show you how to use the VBA Advanced filter.
Then I am going to show you the VBA code that you need to use the Advanced Filter.
Finally I am going to show you how to connect the Advanced Filter to a worksheet event so your users(or you!) can automatically use the filter.
Related links:
Excel VBA Copy - The Complete Guide to Copying Data: (excelmacromastery.com/excel-v...)
The Excel VBA Handbook Course(TheExcelVBAHandbook.com)
Webinar Archives - 60+ Hours of VBA training(excelmacromastery.com/excel-v...)
Shortcut Keys:
Alt + F11: Switch between Excel and the VBA Editor.
Ctrl + R: View the Project Properties Window.
Ctrl + Shift + 8(or Ctrl + *): Get the current region on a worksheet.
F5: Run the code from the current sub.
F9(or click left margin): Add a breakpoint to pause the code.
Tab: To move lines of code to the right(Indent)
Shift + Tab: To move lines of code to the left(Outdent).
Table of Contents:
00:00 - How advanced filter works
00:03 - Why use the Advanced Filter
02:59 - The VBA Code
11:37 - Using the worksheet event to filter - Věda a technologie
I don't know what I'd do without you Paul. You seem to have the best solution for everything I ever look for. I'll probably search your channel when I want to know the next winning lottery tickets. This videos are so valuable. Thank you!
This makes coding so simple, easy to read and makes the size of the files smaller. awesome. keep up the good work.
Brilliant! I love the appropriate level of detail. It makes your videos so useful.
FYI, for anyone that needs it. A relative date can be used in your criteria like this: =">" & TEXT(TODAY()-10,"mm/dd/yyyy")
Thanks Greg. That's a very useful tip.
Thank you so much for this step by step tutorial. It was very easy to follow through and apply it to my own data. I have never used advanced filter before in my life but now I'm a believer. Subscribed!
Excellent stuff. Need more of these kind of tutorial.
This advance filter reminds me of Lotus 1-2-3 from back in the '80s. I remember having to create the criteria and output range to filter data in Lotus 1-2-3 and it filtered really fast. But Excel's ALT D F F short cut combination for filters, not having to create the criteria or output range and pivot tables were a lot more intuitive. Thank you for sharing your knowledge!
This is super fantastic. I always used ADO but this is a ton simpler. There were also formatting problems with ADO that this method doesn't have. Thanks so much!
Really love that you also explain other function that doesn't directly relate to advancedfilter. It help very much for beginner like me to understand the video. Looking forward if you have any video to explain on event function. lol
Okay MINDBLOWN!!!! I've been searching for a way to do this all day and this has literally smashed it! Definitely subbing to this channel! thank you!
Great stuff ! Never new you can reduce number of returned columns to required ones although been using Excel/VBA for years.
Thank you for your clean explanation of the subjects.
Thank you for sharing this course.
Very good video! I learned a lot from it and the explanation is very clear and easy to follow. Amazing channel as well. Thank you for taking the time to show us.
There is always at least one thing I didn't know in each of your videos! Thanks again Paul, for sharing your knowledge
That's great to hear. I always like to come up with little-known but very effective techniques.
Amazing THANK YOU Marco!!!!
Trust me you made my day by this video
Excellence!!! Thank you for sharing this!
Fantastic tip....I have been struggling a little to speed up a long macro. I used this principle to shave off about 5 minutes of vba run time. Thank you for your time and effort in making these videos.
That's great to hear Donald. Advanced Filter is a well-kept secret which I'm hoping to change.
Can't thank you enough for these videos. Wish I discovered your channel earlier!
Thank you very much for sharing. great tutorial!!!
Wonderful Tip! Well explained, as always @Excel Macro Mastery.
I would also recommend a spirit of inquisitive exploration when practicing these methods. I found the next video and its discussions about how to implement AND and OR operators with the advanced filter to be especially useful; I used both explanations to streamline a worksheet that needs to filter the data range based on days of the month. A little more explanation of how the advanced filter implements criteria would have been useful, but it wasn't anything that some playful experimentation couldn't solve.
This is very useful, Paul. Hope to see you more often.
You will Sandeep. Plenty more videos on the way.
Hi Paul! Just watching a half of this video but it is really awesome one. Never knew that advanced filter was so useful. 👍🏾
Thanks. Enjoy watching till the last minutes.
excelentt video I have used a lot advanced filters in my reports but you gave me a new way of do it...
thanks!!!
Very clear and concise tutorial video.
I can see that your channel is rocking and rolling already and long may it continue!
Thanks for putting the content out...
You're fast becoming an Irish Randy Austin on CZcams (and I believe that's a huge compliment).
Thanks very much Ben. I know of Randy Austin - he has built a very big community.
This video has some very useful information that might help me improve an existing macro. Thank you!
Just so great .. (Applause) This was just it what i was looking for. Thak you so much for the effort and everything.
Thanks for sharing your knowledge, really advanced
This video is outstanding! It was so helpful.
This is the best advanced filter tutorial I have seen in years. Excellent Presentation.
Thanks Daniel. It's great to hear such a positive response.
Excellent and Helpful Presentation. Appreciate your help.
wow sir your teaching way is very good 👍👍👍👍
Awesome! Thank you very much for this video!
It was nice and awesome video. Thank you for sharing.
All your videos are simply awesome! I wish I had seen them before, I would have saved hours of head scratching code! Thanks
Thanks Denis! That is high praise indeed.
very useful
So glad that i met your video
You are my goto guy for anything excel. I admire your consistent quality content 🙏
Thanks Prabhat. I appreciate the compliment.
Thank you so much sir for your unwavering support and keeping us abreast in VBA programming.
Full support to your channel.
Great job Paul. Love this stuff.
Good to hear. Plenty more on the way.
Thanks a lot Paul. This video (like all your videos) is really excellent
Thanks a lot.
Great video, Paul and instructive.
Thanks for the feedback John.
it's very helpful, i've been looking for this kind of advance filter a couple of weeks ago. thank you sir, it might be a great help for my system working on
Thank you, the presentation was excellent and easy to understand. When ran the code it worked beautifully, however the filtering also remove duplicate records.
Hi Paul.. this video is really excellent. I've made up my own data set to follow along and reinforce the concepts and code. Thanks for this super tip and technique. Really enjoying your CZcams channel.. I think it is one of the best resources out there for learning and expanding VBA knowledge. Thanks for kindly sharing your skills.. much appreciated. Thumbs up!!
Thanks very much Wayne. Plenty more videos on the way.
I feel the urgent need to thank you once again so much for this truly nice tutorial. I followed all the steps on my PC and I am very astonished how great this code is. Really thank you Paul.. You are excellent. Thank you.. 🌟
Thanks Salim, That is great praise to hear.
Ditto, came here to say the same thing... I’m new to VBA on CZcams having worked my way through a physical book first. I found your information was distinct, the descriptions clear and presentation was both well paced and good vocal tone. This was perfect to follow and learn from. Thank you very much.
You are a good teacher. I like how you explain things step by step instead of the whole thing at once. Your way allows me to find my error when I do something wrong.
Thanks Linda.
Thank you Paul for this amazing code.
You're welcome Edmundo.
I searched high and low to find advice on how to quickly copy data between two tables ... and found nothing. Here's the answer and brilliantly illustrated. Thank you Paul. I've been coding in VBA on Access for years and thought Excel was just rubbish at handling large volumes of data.
Glad you found it useful Simon.
Delighted to see someone else who has seen the light with the Advanced Filter. I usually joke with people that since most people don't know about it, it must be a new feature. That it was in the first version of Lotus 1-2-3 perhaps explains some of the arcane rules for setting things up. One super easy application is not just to copy data, but to rearrange the order of the columns (a task that people often struggle with). Using the extract range with the new order of all or a subset of the columns is the fastest way to copy AND rearrange.
I didn't realise it was around so long! Thanks for the info.
Selecting columns or rearranging them is one of it's biggest strengths. Because using other methods requires a lot of extra code to do this.
Hi Paul, your videos are great!
Thanks Marcel.
You're welcome.
Your tuto is a filtering reference !!
Excellent sir
Hats off to ur knowledge
whether you are pro or intermediate VBA user, you will always find new and efficient ways of writing code. Thanks for your content and wonderful presentation skills.
You are welcome!
You are the men!
Thanks from Brazil!
Thanks Marcos
I had a project years ago that did filtering on over 23,000 items and then sent out an email to various users with different error codes. At the time, it checked against 3 conditions and still took over 40 minutes to process. I rewrote the code using advanced filters and dropped the total tune to under 5 minutes. They didn't know how many conditions would be checked when they were finished so I added a feature to allow them to define a many as they wanted without requiring another rework of the code. At last count they were up to 38 conditions being checked with no significant overhead in time requirements. I've been a fan of advanced filters ever since. Great info here.
Thanks for feedback. It's great hearing about a successful real world project.
Another one that puts me out of my misery with expert users! I just forward the link to this video!
Edit: Excellent content I wanted to add!
Thanks archibald
Excellent video 👍
Thank you so much you r real hero for us
Love from India ❤️
Thanks for sharing!
Thank you for sharing this and explaining in a straight forward way. I am no VBA master but using this has allowed me to help someone with a document that took them ~8 hrs to produce manually and now takes ~10 seconds (VBA benchmarked)
That's awesome to hear.
I admire your videos Paul. You are amazing. 🌟 🌟 🌟 Thanks indeed for sharing. Excellent... Great.. 🌟
You're welcome Salim.
You're simply great sir😍
Thank you Paul, this is brilliant! you have an extraordinary way to explain things! I am buying your course on Udemy. I wish I met you years ago!
Thank you for your time and expertise. Top-notch tutorials! You have a new subscriber here 👍
Welcome aboard!
Damn... I'm amazed did it at work for filtering big files and it's getting my work done 10x faster
Big thanks!
Subbed and liked keep up the content :)
You're welcome.
thank you so much.. this saved me today :)
Very helpful information . It help me solve a current challenge Thank you😃
This is pretty useful. Thank you!
You're welcome Bobby
This is mind blowing and exactly what I've been looking for, for ages now! Thanks so much! I plan to integrate this code with a loop that goes through all the individual values of the criteria and repeats this process for each filtered list. And then it outputs the results into a sheet named by an string in a cell offset from the criteria and exports that sheet into a new book (also named by that value). I have code similar to this except it's all manual and unreadable, but I've been looking for a way to do this as a filter method for months! THANKS SO MUCH! Earned that sub.
@
Alan Frančišković this sounds like what i need; have you made progress on this?
@@ignatiusmusonda6658 unfortunately no, i havent really touched it since i couldnt find the time and i do these things rarely (but am passionate about them nonetheless). You might be the motivation i need to finish it, might try in spare time since i no longer have free time at work for this. Will let you know!
@@ignatiusmusonda6658 I finished it :) I think it would be messy to post it here, find me on FB or TG and I'll send you the code. It has a few magic numbers/things you need to tweak for your own purposes, but other than that it works, just tested it in the office a few hours ago.
@@Lykoskia Great i just sent you a request on fb.
Excellent. I have to learn from basic. Please guide me. Your way of explaining is really superb. Hats off to your god's gift talent.
Thank you. Gr8 lessons
Amazing video sir... really very helpful videos you upload..🙏😊
Great Video ! It was a lot of help for the project I was doing.. Thanks a million !
Great to hear!
Very Helpful... Thank You... We need Excel masters like you...
Happy to help
very comprehensive!
Hi, thanks for posting this! It has really helped with a problem I have been facing :-)
I have one question. Would it be possible to extend this macro so that it looped through a number of different filter criteria?
For example, could you populate row 2 and 3 with different criteria and the macro would take both sets of information and paste them in the output?
Superb! Very useful information
Thank you.
It was a good tutorial. Thank you very much.
Thanks for your support Nanthaphong.
Hi, I am completely new to VBA so not sure if i am throwing my self in at the deep end. Great video really helped me with building a workbook which makes it very easy users to quickly review information. However, i wanted to take this one step further... I have two sets of data on the same sheet (e.g B7:E32 and B36:E61, with the criteria range B1:B5 to allow me to filter by multiple criteria in same col) the data ranges will use the same criteria when filtering. I tried to tweak the code slightly to filter both data ranges at the same time but it seems to 'hide' the rows on the first set of filtered data (B7:B32 range)
Sub AdvancedFilterInPlace3()
Dim rgData As Range, rgData2 As Range, rgCriteria As Range
Set rgData = ThisWorkbook.Worksheets("Sheet3").Range("B7:E32")
Set rgData2 = ThisWorkbook.Worksheets("Sheet3").Range("B36:E61")
Set rgCriteria = ThisWorkbook.Worksheets("Sheet3").Range("B1").CurrentRegion
rgData.AdvancedFilter xlFilterInPlace, rgCriteria
rgData2.AdvancedFilter xlFilterInPlace, rgCriteria
End Sub
any help would be greatly appreciated
Thanks
Excellent presentation, for ur explanation take a bow 🙇♂️
Thanks a lot Rohith
Thankyou paul for your video..
I think we can change the "rgcriteria" to be = range("a2").currentregion so we aren't to make calculation " if range("a1").currentregion.row.count = 1 " everytime it doesn't intersect
Hi, This was amazingly helpful! Is there a way to use xlfiltercopy and have it copy conditional formatting into the output range as well? Thanks!
Nice. I've used Advanced Filter before, but was never clear on the use of Criteria Range. I'm hoping to use this VBA feature to be able to filter from one workbook and copy the data to another. The source worksheet has 61 columns all the way to BI, and variable rows. I only need data from 7 of those columns. And to make it interesting, one column has random blank cells! Should be fun! Thanks Paul!
You're welcome Russell. Sounds like an interesting project.
Excellent sir
Marvellous. Thanks
Beautiful.
Very Usefully yout tricks mi amigo..... Gracias
You're welcome.
Thank you very much for this helpfull video. One question, I have to filter a tons of data using differente filters; for example: Col1 = Filter1, Filter2 & Col2 = Filter1, Filter2, Filter3 and so on. What should be the best approach to filter all the data using diferente filters with more than 1 value?
Thank you so much for this video. My application is so much faster. Thanks for sharing your knowledge.
Very useful.
I really like your videos. They are inspiring but they always lead me to challenging myself to implement what you are sharing. I am trying to use Advanced filter to select ranges with the same number of columns however the number of rows varies and copy them to another worksheet. In my specific case I have 8 filtered ranges that i am enter into a table on another worksheet. Any advice?
Thanks for the tutorial.
What if you're using one condition in another worksheet, and the output should be a csv saved in a specific folder without the header?
How do you check the time spent in running the macro?
awesome video !!!
Thanks Prince.
Superb sir
Thanks a lot i do my first Macro once checking your Video, Very Helpful Video
Glad it helped
Nice l know and using advanced filter for past 20 years and named ranges and tables also very useful
Thanks for sharing
Hi everyone,
If you haven't used the Advanced Filter before, I think you'll be amazed when you see how fast and efficient it is.
Enjoy! Please leave any questions or comments below.
Notes:
*Tom* will return all records that start with 'Tom'
*="Tom"* will return all records that *do not contain* 'Tom'
*="=Tom"* will return all records that *contain* 'Tom'
Thank you.
I have a question. Can you copy the filtered data to another workbook?
how about clipboard ?
Hi, on 18:35 the ClearFilter is not working for me. how to solve this issue? Thank you.
How to put new data in the next empty row in Output sheet using advanced filter?
can you advance filter by format, example highlighted cells?
Hi Paul. Thanks for a great video. I applied this to all my previously built solutions. I am, however, not entirely sure what you mean by the If- statement you explained around 17:15. (if target.Cells.count.....) could you elaborate?
very useful, thank you
Many thanks Hok Wai.
Thanks a lot. I used to depend on pivot tables but now I will use Advanced Filters instead which is much cleaner and faster. I can use it to filter data based on a user criteria, create a subset by workbooks.add and mail it to user.
You're welcome John.
You're the GOAT
I find all the explanations extremely clear and understandable. Thank you! SUPER BRAVO!
One problem: when I use the function to copy to another sheet:
rgData.AdvancedFilter xlFilterCopy, rgCriteria, rgOutput
I get run-time error 1004
how can i avoid it?
Thanks again