VBA Advanced Filter - The FASTEST way to Copy and Filter Data

Sdílet
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

Komentáře • 385

  • @LordBransty
    @LordBransty Před 2 měsíci

    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!

  • @Historymaker431
    @Historymaker431 Před 4 lety +5

    This makes coding so simple, easy to read and makes the size of the files smaller. awesome. keep up the good work.

  • @greg2865
    @greg2865 Před 4 lety +8

    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")

  • @angs90
    @angs90 Před 4 lety

    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!

  • @akbarmahfuzalam
    @akbarmahfuzalam Před 4 lety

    Excellent stuff. Need more of these kind of tutorial.

  • @genechicago4806
    @genechicago4806 Před 2 lety +1

    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!

  • @davidrhodes6016
    @davidrhodes6016 Před 2 lety

    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!

  • @soup1207
    @soup1207 Před 3 lety +1

    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

  • @Nigromancy
    @Nigromancy Před 3 lety

    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!

  • @1yyymmmddd
    @1yyymmmddd Před 4 lety +3

    Great stuff ! Never new you can reduce number of returned columns to required ones although been using Excel/VBA for years.

  • @iincitr
    @iincitr Před 4 lety

    Thank you for your clean explanation of the subjects.

  • @kouassiigor4497
    @kouassiigor4497 Před rokem

    Thank you for sharing this course.

  • @tomjun8945
    @tomjun8945 Před 4 lety

    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.

  • @dangelorrrr
    @dangelorrrr Před 4 lety +2

    There is always at least one thing I didn't know in each of your videos! Thanks again Paul, for sharing your knowledge

    • @Excelmacromastery
      @Excelmacromastery  Před 4 lety +1

      That's great to hear. I always like to come up with little-known but very effective techniques.

  • @telljansiddiqi
    @telljansiddiqi Před 4 lety

    Amazing THANK YOU Marco!!!!
    Trust me you made my day by this video

  • @danteencinas7020
    @danteencinas7020 Před 2 lety

    Excellence!!! Thank you for sharing this!

  • @donaldturrell1387
    @donaldturrell1387 Před 4 lety +24

    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.

    • @Excelmacromastery
      @Excelmacromastery  Před 4 lety +4

      That's great to hear Donald. Advanced Filter is a well-kept secret which I'm hoping to change.

  • @musefirefox2420
    @musefirefox2420 Před 3 lety +1

    Can't thank you enough for these videos. Wish I discovered your channel earlier!

  • @virak981
    @virak981 Před 4 lety +1

    Thank you very much for sharing. great tutorial!!!

  • @pshamrock787
    @pshamrock787 Před 3 lety +2

    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.

  • @sandeepkothari5000
    @sandeepkothari5000 Před 4 lety

    This is very useful, Paul. Hope to see you more often.

  • @buithitrami175
    @buithitrami175 Před 4 lety +1

    Hi Paul! Just watching a half of this video but it is really awesome one. Never knew that advanced filter was so useful. 👍🏾

  • @horaciobrambila3581
    @horaciobrambila3581 Před 2 lety

    excelentt video I have used a lot advanced filters in my reports but you gave me a new way of do it...
    thanks!!!

  • @BenLinfordUK
    @BenLinfordUK Před 4 lety

    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).

    • @Excelmacromastery
      @Excelmacromastery  Před 4 lety +1

      Thanks very much Ben. I know of Randy Austin - he has built a very big community.

  • @genechicago4806
    @genechicago4806 Před 2 lety

    This video has some very useful information that might help me improve an existing macro. Thank you!

  • @salihocaoglu
    @salihocaoglu Před 4 lety

    Just so great .. (Applause) This was just it what i was looking for. Thak you so much for the effort and everything.

  • @janvanderwind9033
    @janvanderwind9033 Před rokem

    Thanks for sharing your knowledge, really advanced

  • @jeditiger78
    @jeditiger78 Před 4 lety

    This video is outstanding! It was so helpful.

  • @bestscenes1469
    @bestscenes1469 Před 4 lety +1

    This is the best advanced filter tutorial I have seen in years. Excellent Presentation.

  • @ajankoppan966
    @ajankoppan966 Před 4 lety

    Excellent and Helpful Presentation. Appreciate your help.

  • @vijaysahal4556
    @vijaysahal4556 Před 4 lety

    wow sir your teaching way is very good 👍👍👍👍

  • @MrZH6
    @MrZH6 Před 4 lety

    Awesome! Thank you very much for this video!

  • @rajkumarpalle8217
    @rajkumarpalle8217 Před rokem

    It was nice and awesome video. Thank you for sharing.

  • @deniscloutier383
    @deniscloutier383 Před 4 lety

    All your videos are simply awesome! I wish I had seen them before, I would have saved hours of head scratching code! Thanks

  • @teeravacvac5443
    @teeravacvac5443 Před 4 lety

    very useful
    So glad that i met your video

  • @prabhatmishra123
    @prabhatmishra123 Před 4 lety +1

    You are my goto guy for anything excel. I admire your consistent quality content 🙏

  • @freeliberalminds
    @freeliberalminds Před rokem

    Thank you so much sir for your unwavering support and keeping us abreast in VBA programming.
    Full support to your channel.

  • @krn14242
    @krn14242 Před 4 lety

    Great job Paul. Love this stuff.

  • @mdelcueto
    @mdelcueto Před 4 lety

    Thanks a lot Paul. This video (like all your videos) is really excellent

  • @JohnOvens
    @JohnOvens Před 4 lety

    Great video, Paul and instructive.

  • @johnericalvarez3480
    @johnericalvarez3480 Před rokem

    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

  • @grantmeyers5189
    @grantmeyers5189 Před 3 lety

    Thank you, the presentation was excellent and easy to understand. When ran the code it worked beautifully, however the filtering also remove duplicate records.

  • @wayneedmondson1065
    @wayneedmondson1065 Před 4 lety

    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!!

  • @sasavienne
    @sasavienne Před 4 lety +5

    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.. 🌟

    • @Excelmacromastery
      @Excelmacromastery  Před 4 lety +1

      Thanks Salim, That is great praise to hear.

    • @thegrumpyhippy
      @thegrumpyhippy Před 4 lety

      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.

  • @lindalowney1404
    @lindalowney1404 Před 3 lety

    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.

  • @edge5817
    @edge5817 Před 4 lety

    Thank you Paul for this amazing code.

  • @sdawilson
    @sdawilson Před 4 lety

    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.

  • @psgoldberg
    @psgoldberg Před 4 lety

    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.

    • @Excelmacromastery
      @Excelmacromastery  Před 4 lety

      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.

  • @R72Investments
    @R72Investments Před 4 lety +1

    Hi Paul, your videos are great!

  • @nour-eddineoumakhlouf5296

    Your tuto is a filtering reference !!

  • @sreedharlikit8966
    @sreedharlikit8966 Před rokem

    Excellent sir
    Hats off to ur knowledge

  • @NanaAtiekuFrans
    @NanaAtiekuFrans Před 4 lety

    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.

  • @marcosscherer9784
    @marcosscherer9784 Před 3 lety

    You are the men!
    Thanks from Brazil!

  • @TheAzonei
    @TheAzonei Před 2 lety

    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.

    • @Excelmacromastery
      @Excelmacromastery  Před 2 lety

      Thanks for feedback. It's great hearing about a successful real world project.

  • @thearchibaldtuttle
    @thearchibaldtuttle Před 4 lety +1

    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!

  • @harshitdubey1902
    @harshitdubey1902 Před 4 lety

    Excellent video 👍
    Thank you so much you r real hero for us
    Love from India ❤️

  • @ElWiwif
    @ElWiwif Před 2 lety

    Thanks for sharing!

  • @kolinsin23
    @kolinsin23 Před 4 lety +1

    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)

  • @sasavienne
    @sasavienne Před 4 lety

    I admire your videos Paul. You are amazing. 🌟 🌟 🌟 Thanks indeed for sharing. Excellent... Great.. 🌟

  • @vaibhavdahival6397
    @vaibhavdahival6397 Před 2 měsíci

    You're simply great sir😍

  • @kofilinoadadjo3264
    @kofilinoadadjo3264 Před 2 lety

    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!

  • @kellyspoolhall761
    @kellyspoolhall761 Před 3 lety

    Thank you for your time and expertise. Top-notch tutorials! You have a new subscriber here 👍

  • @Artii1230
    @Artii1230 Před 3 lety

    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 :)

  • @ajayiae
    @ajayiae Před 2 lety

    thank you so much.. this saved me today :)

  • @eduardopena7700
    @eduardopena7700 Před rokem

    Very helpful information . It help me solve a current challenge Thank you😃

  • @spunjbom
    @spunjbom Před 4 lety

    This is pretty useful. Thank you!

  • @Lykoskia
    @Lykoskia Před 4 lety +2

    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.

    • @ignatiusmusonda6658
      @ignatiusmusonda6658 Před 2 lety

      @
      Alan Frančišković this sounds like what i need; have you made progress on this?

    • @Lykoskia
      @Lykoskia Před 2 lety

      @@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!

    • @Lykoskia
      @Lykoskia Před 2 lety

      @@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.

    • @ignatiusmusonda6658
      @ignatiusmusonda6658 Před 2 lety

      ​@@Lykoskia Great i just sent you a request on fb.

  • @1gopalakrishnarao
    @1gopalakrishnarao Před 4 lety

    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.

  • @armotxa124
    @armotxa124 Před 4 lety

    Thank you. Gr8 lessons

  • @arunpandey2828
    @arunpandey2828 Před 4 lety

    Amazing video sir... really very helpful videos you upload..🙏😊

  • @TareqAlbahri
    @TareqAlbahri Před 2 lety

    Great Video ! It was a lot of help for the project I was doing.. Thanks a million !

  • @nullhas
    @nullhas Před 4 lety

    Very Helpful... Thank You... We need Excel masters like you...

  • @stevennye5075
    @stevennye5075 Před 4 lety +1

    very comprehensive!

  • @huwwainwright4959
    @huwwainwright4959 Před 4 lety +2

    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?

  • @zm2813
    @zm2813 Před 4 lety

    Superb! Very useful information

  • @tatumchanel4667
    @tatumchanel4667 Před 4 lety

    It was a good tutorial. Thank you very much.

  • @cz4955
    @cz4955 Před 3 lety +1

    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

  • @rohithkumarsr2531
    @rohithkumarsr2531 Před 3 lety

    Excellent presentation, for ur explanation take a bow 🙇‍♂️

  • @educational6621
    @educational6621 Před 4 lety +1

    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

  • @janekaufmann9453
    @janekaufmann9453 Před 4 lety

    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!

  • @jrstolsen
    @jrstolsen Před 4 lety

    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!

  • @ravindrapatel4591
    @ravindrapatel4591 Před 4 lety

    Excellent sir

  • @davecks3042
    @davecks3042 Před 4 lety

    Marvellous. Thanks

  • @XLarium
    @XLarium Před 4 lety +1

    Beautiful.

  • @taquitonavajas9911
    @taquitonavajas9911 Před 4 lety

    Very Usefully yout tricks mi amigo..... Gracias

  •  Před 4 lety +1

    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?

  • @forplaisir
    @forplaisir Před 4 lety

    Thank you so much for this video. My application is so much faster. Thanks for sharing your knowledge.

  • @robderrt
    @robderrt Před 4 lety

    Very useful.

  • @robertstrickland8303
    @robertstrickland8303 Před 3 lety +1

    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?

  • @MosesKigo
    @MosesKigo Před 4 lety

    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?

  • @PrincePedia
    @PrincePedia Před 4 lety

    awesome video !!!

  • @Karthickchidambaram
    @Karthickchidambaram Před 2 lety

    Superb sir

  • @mohamedbadrelden8046
    @mohamedbadrelden8046 Před 4 lety

    Thanks a lot i do my first Macro once checking your Video, Very Helpful Video

  • @prakashsrinivasan7840
    @prakashsrinivasan7840 Před 3 lety

    Nice l know and using advanced filter for past 20 years and named ranges and tables also very useful

  • @Excelmacromastery
    @Excelmacromastery  Před 4 lety +52

    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.

    • @alexandrumarcel3696
      @alexandrumarcel3696 Před 4 lety

      I have a question. Can you copy the filtered data to another workbook?

    • @moyura2
      @moyura2 Před 4 lety

      how about clipboard ?

    • @virak981
      @virak981 Před 4 lety +1

      Hi, on 18:35 the ClearFilter is not working for me. how to solve this issue? Thank you.

    • @jundidoang7346
      @jundidoang7346 Před 4 lety

      How to put new data in the next empty row in Output sheet using advanced filter?

    • @jamespecorella7395
      @jamespecorella7395 Před 4 lety

      can you advance filter by format, example highlighted cells?

  • @stefanbotha7451
    @stefanbotha7451 Před 4 lety

    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?

  • @yuenhw2
    @yuenhw2 Před 4 lety

    very useful, thank you

  • @johnabram4159
    @johnabram4159 Před 4 lety

    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.

  • @djkujo007
    @djkujo007 Před rokem

    You're the GOAT

  • @nullasoltanto5906
    @nullasoltanto5906 Před rokem +1

    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