How to make your Excel VBA code run 1000 times faster

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 ต.ค. 2024

ความคิดเห็น • 786

  • @wmcnabb
    @wmcnabb 5 ปีที่แล้ว +123

    Paul, you are on fire of late! Some EXTREMELY useful techniques explained very well. I have always been able to tell the level of a developer by what stage they are at in these types of examples. I will be recommending this video to lots of people.

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว +5

      Hi Wyatt,
      That's actually a great point you make. It's like the evolution of a VBA developer. The begin using Select and activate and evolve through each stage from there.

    • @incobart
      @incobart 4 ปีที่แล้ว +1

      @@Excelmacromastery hi, actualy I am looking your other video that explains it .. thanks

    • @prayushijain4087
      @prayushijain4087 4 ปีที่แล้ว

      Please provide your inputs
      Check this too
      th-cam.com/users/ExcelAutomationByMudit

    • @TheZenytram
      @TheZenytram 2 ปีที่แล้ว

      that pretty funny, i'm learning vba for the last 3 month, and this is precisely the steps i was taking it. Although i've stopped at the array level, i know that i'm miles away, too crude in the knowledge about the rest.
      This advanced filter, to me , looks like that i have found a treasure chest hidden somewhere.

  • @spamdump4459
    @spamdump4459 4 ปีที่แล้ว +24

    Saw this video and the next day reworked some macros I wrote for work. Previously if there were more than 20 files you might as well wander down the hall, pour a cup of coffee and when you got back it would be finishing, maybe. In less than a hour of recoding I had it down to 9 seconds! Today I got it under 2 seconds for 70 files.

  • @luciorlc
    @luciorlc 4 ปีที่แล้ว +3

    I thank God because people like you exist.

  • @tequilacollins
    @tequilacollins 5 ปีที่แล้ว +30

    I've been a very advanced VBA programmer for a lot of years, but still learned something new. Thanks.

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว +1

      That's great to hear Tom.

    • @prayushijain4087
      @prayushijain4087 4 ปีที่แล้ว

      Check this too
      th-cam.com/users/ExcelAutomationByMudit

  • @PeterrDDark
    @PeterrDDark 5 ปีที่แล้ว +28

    This is absolutely amazing. I went from a run time of 6 minutes to 14 seconds! Thank you so much!

  • @supplychainsys
    @supplychainsys 4 ปีที่แล้ว +9

    Paul, you are one of the best overall coders I have found. You think out all the critical issues around a successful project - design, operational speed efficiency, code maintenance, user experience and project construction. It would be a joy to have you on or leading any team I have in the future.

  • @321tryagain
    @321tryagain 5 ปีที่แล้ว +12

    This is amazing. I got suggested your video by youtube. Most VBA videos are too simple for me.
    I had no idea that turning off calculations would give such a drastic improvement. It cut my execution time from 161 seconds to 1.2 seconds

  • @Excelmacromastery
    @Excelmacromastery  5 ปีที่แล้ว +39

    Hi everyone!
    This video has some great practical techniques to help you speed up your code.
    Please add any comments below.
    Thank you.

    • @8ballWASD
      @8ballWASD 5 ปีที่แล้ว

      thank you, Mr Paul! I'm going to implement it in my team. I wish you all the best in your career!

    • @amareshachar4335
      @amareshachar4335 4 ปีที่แล้ว

      Hello Sir.. I have below code in my file.. it takes about 10 seconds to run.. how can we get it work faster..!?
      Sub do_it()
      For r = 7 To 18
      Range("K" & r & ":L" & r).Value = Range("I" & r & ":J" & r).Value
      If Cells(r, "G") "" Then Cells(r, "K") = Cells(r, "G")
      If Cells(r, "H") "" Then Cells(r, "L") = Cells(r, "H")
      Next r
      End Sub

    • @sonderfall1979
      @sonderfall1979 4 ปีที่แล้ว

      Hi, I have two questions: 1) I have an Excel simulation where I have 15'000 clients and want to run 10'000 scenario. At the end I'll produce four matrices (15'000 times 10'000 times 4). It takes about 36 minutes for 1000 scenarios and I already worked with arrays (as good as I could with my limited knowledge). Do you think it is possible to store up to 0.6 billion data records in Excel or do you have a tip what to do because Excel almost breaks down ;-). Should I "outsource" data into CSV-spreadsheets instead? 2) Do you know a good random number generator in VBA. I tried to use the "built in" random number generator but somehow it didn't work with my array code.

    • @plumberski8854
      @plumberski8854 4 ปีที่แล้ว

      Read that Excel 2016 32 bits has a file size problem running VBA when it is greater than 50 Mb. True? If so, why? 50 Mb is not that big.

    • @prayushijain4087
      @prayushijain4087 4 ปีที่แล้ว

      Very nice video...
      Please provide your inputs
      th-cam.com/users/ExcelAutomationByMudit

  • @christophseyfarth8018
    @christophseyfarth8018 4 ปีที่แล้ว +6

    One of the best and most useful Excel Videos found on the entire internet. Well Done and a big THANK YOU.

  • @rasmusravnsbjergbyriel2846
    @rasmusravnsbjergbyriel2846 5 ปีที่แล้ว +1

    I think this may have been THE best VBA advice I have ever seen. Working in a large company everyday, sometimes handling hundredthousands of lines of data, I can't wait to implement these advice in my future work. And maybe even rework some of my existing code.

  • @BrendanOD
    @BrendanOD 5 ปีที่แล้ว +52

    Instead of setting calculation to automatic at the end, it’s best practice to capture the current calc mode at the beginning. And set it back to that at the end. Manual calc may have already been set in Excel, a macro that turns it back on can be an annoyance.

    • @aguswidi9316
      @aguswidi9316 4 ปีที่แล้ว +1

      Agree with brendan

  • @esrAsnataS
    @esrAsnataS 2 ปีที่แล้ว +2

    As someone who loves Macroing :) everything I do in excel and who is totally self taught with the massive help of google, that was inspiring. One of the most helpful things I have seen.
    Thank you!!

  • @atchoum87
    @atchoum87 5 ปีที่แล้ว

    Hi. i'm in the middle of creating an output sheet with a bunch of copy/paste from different sheets... Most useful youtube recommandation EVER! Thanks for the tips, it'll be very usefull

  • @jeroldjay1711
    @jeroldjay1711 5 ปีที่แล้ว +7

    I really wish I had watched this two years ago!! It would have saved me a lot of time learning some of these techniques the hard way!!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว +2

      I wish I had watched myself 10 years ago😛

  • @medasbabu
    @medasbabu 2 ปีที่แล้ว

    Thanks Paul, Just completed coding to process 2.5 lakhs of records, its taking quite a lot of time, had to split it into 5 sets and run the code.
    This video provides, clear picture where i can improve my code and speed up the process.
    Thank you very much...

  • @HuyHuynh-g3b
    @HuyHuynh-g3b ปีที่แล้ว

    Hats off to you sir. Big help. Im running a small engineering calculation. but still there are hundreds of sheets need to be duplicated. these tips improve it by a lot.

  • @pe00100
    @pe00100 4 ปีที่แล้ว +1

    I write lots of VBA code and I learned new tricks. I never used the advanced filter before. Thanks for creating this overview.

  • @ricomajestic
    @ricomajestic ปีที่แล้ว

    This guy definitely knows his stuff! I am impressed.

  • @MyFlopsi
    @MyFlopsi 4 ปีที่แล้ว +1

    A big thanks from Germany for this very useful und powerful way to code, people like you make this world better!

  • @martinargimon730
    @martinargimon730 3 ปีที่แล้ว

    Thanks for this tutorial. Is a MUST for all 'amateur' programmers like me. Excellent and Thanks once again Regards. Martin ( South Africa)

  • @Apsis0215
    @Apsis0215 ปีที่แล้ว +1

    Fantastic overview and breakout of the code! I never realized the cell to cell was so slow and traditional coding was so much faster (Arrays). That element collector trick is also very amazing!

  • @brad7914
    @brad7914 5 ปีที่แล้ว +5

    Paul this is probably best Excel video I have ever watched - what you have shown is just amazing and something that will benefit me massively - thanks so much for sharing and keep up the great work!!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      Thanks Brad. Glad you have got so much use from this video.

  • @martiancocian6301
    @martiancocian6301 2 ปีที่แล้ว

    I am speechless. This is wonderful stuff. Thank you for sharing. God bless!

  • @paulblackwood1273
    @paulblackwood1273 2 ปีที่แล้ว +1

    I really found these tips super easy to use and they allowed me to improve my spreadsheets performance 380x. Reduced run speed from 45 mins to 8 sec! Woohoo. The best one by far was reading the worksheet data into an array and processing it in memory rather than accessing the sheet. These instructions were so clear and easy to follow. Amazing. I even implemented the module timing in my code to target savings.

  • @theexcelproject6973
    @theexcelproject6973 2 ปีที่แล้ว

    This is one of the most genuinely helpful contents I have ever come across.

  • @itsdaj
    @itsdaj ปีที่แล้ว

    This is the double slit experiment for Excel. Thank you for breaking this down.

  • @leowanner1228
    @leowanner1228 4 ปีที่แล้ว +1

    Great explanation and demonstration of how much of an impact different coding will have on the efficiency in getting the processed results. I am new to VBA coding and I am making my first attempt at writing script for an Excel project. I am attempting to write VBA code to accomplish the task of transferring data from 7 individual Excel Workbooks to combine into 1 Main Excel Workbook file. I only need to transfer 3 columns of data from each of the 7 individual workbooks as follows:
    From: Team A Excel Workbook, Sheet 1, Columns: D, K and T. To: Main Excel Workbook, Sheet 1, Columns: D, K and T.
    From: Team B Excel Workbook, Sheet 1, Columns: E, L and U. To: Main Excel Workbook, Sheet 1, Columns: E, L and U.
    From: Team C Excel Workbook, Sheet 1, Columns: F, M and V. To: Main Excel Workbook, Sheet 1, Columns: F, M and V.
    From: Team D Excel Workbook, Sheet 1, Columns: G, N and W. To: Main Excel Workbook, Sheet 1, Columns: G, N and W.
    From: Team E Excel Workbook, Sheet 1, Columns: H, O and X. To: Main Excel Workbook, Sheet 1, Columns: H, O and X.
    From: Team F Excel Workbook, Sheet 1, Columns: I, P and Y. To: Main Excel Workbook, Sheet 1, Columns: I, P and Y.
    From: Team G Excel Workbook, Sheet 1, Columns: J, Q and Z. To: Main Excel Workbook, Sheet 1, Columns: J, Q and Z.
    What is the best way to apply the same code efficiency that you demonstrated in this video to this kind of task?

  • @tocobern
    @tocobern 4 ปีที่แล้ว

    Brilliant, well explained. I've not used vba for years and I was helping someone out with something urgent for their work. I got what they needed sorted out but my process was running so slow. They are giving a demonstration today but it's been annoying me that it's taking around 2.30mins to run through about a thousand records. Now I see its because I am making all these select cut paste onto different worksheets. I will use some of the techniques you so brilliantly explained. So I had to subscribe. Thanks again.

  • @Greenham1988
    @Greenham1988 5 ปีที่แล้ว

    As the only accountant at my last two jobs that knew VBA, it's extremely refreshing to know others are using VBA at this level.
    I've always referenced your site, I did not know you had a TH-cam channel, I've been on here just going through videos for (Repeating them of course) the last two days.
    Thank you so much for sharing this knowledge.

  • @georhodiumgeo9827
    @georhodiumgeo9827 5 ปีที่แล้ว +1

    I have never tried to put the data in an array and then process it. Very clever.
    People should also know how much faster Excel 2010 was at running VBA code than 13,16 or 365. If you haven’t upgraded stay away.
    And if you have a lot of code use a VBA decompiler from time to time. Errors will build up in the P-code and you can clear them out. I don’t know why but it can also speed the macros up. Because magic but I swear it’s true.
    Great video this should be a “watch first” for learning VBA!

    • @menecany6444
      @menecany6444 2 ปีที่แล้ว

      and what about excel 2021?

  • @plumberski8854
    @plumberski8854 4 ปีที่แล้ว +1

    Working on a spreadsheet with 1 million rows (Excel 2016 32 bits). Manual calculation mode. Tested it with 2000 rows and it took about 100 sec. When I ran the 1 million rows, even after 14 hours, it has not finished. Don't know whether it was hanging or needed more time. I will try out some of your tips. About 1/2 of what you have shown is an alien language to me. Ha. Not that well versed in VBA. Many many thanks for this video. You made my day!

    • @Excelmacromastery
      @Excelmacromastery  4 ปีที่แล้ว

      Glad you enjoyed it. Check out my newest video which is a follow up to this one with more optimization techniques th-cam.com/video/RNqd89K_bbU/w-d-xo.html

  • @danteencinas7020
    @danteencinas7020 2 ปีที่แล้ว

    Wow... Nice... Advanced filters blew my mind! Thank you!

  • @EduardoRibeiroEdu
    @EduardoRibeiroEdu 3 ปีที่แล้ว

    Man, this is the BEST VIDEO ON VBA in youtube! Thanks a lot.

  • @IanLockley
    @IanLockley 5 ปีที่แล้ว +2

    Paul, you've blown me away! I'll be using these techniques to vastly improve the speed of my current Excel projects. Some of my projects take 10 to 15 minutes. This is bonkers! I've been writing the most inefficient code possible.

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว +1

      Thanks Ian. Don't worry we've all been there. The Copy and Paste method is so common place in VBA web examples that when I discovered assign I was sure it couldn't possibly be better than Copy and Paste.

  • @guybloomfield5820
    @guybloomfield5820 4 ปีที่แล้ว

    The array instead of range tip! It's so obvious but I had never thought of it. Thank you sir!

  • @sacha7407
    @sacha7407 5 ปีที่แล้ว

    I program in VBA for over 10 years and I have learned again some things. Thank for this video very clear… even for a french with poor english

  • @Mraungnaingthu1
    @Mraungnaingthu1 2 ปีที่แล้ว

    Your live explanation is precious for me.

  • @pddhavale
    @pddhavale 5 ปีที่แล้ว +1

    Great work and Superb method to explain in fluent and descent manner,Love you .Salute for attitude and making it available for all.Thanks

  • @dst47
    @dst47 5 ปีที่แล้ว +2

    Much appreciated. My excel calculation time has dropped from 20 mins to 5mins. It saved lot of time of my life. Thank you so much.

  • @tristanc6967
    @tristanc6967 3 ปีที่แล้ว +7

    A note on Paul's final comment about sampling these methods on a small set of data first:
    Some of these methods will only give you gains as you scale up. For example, in a table with 1800 rows, adding the TurnOffStuff and TurnOnStuff functions added 15ms to my run time.
    Results from a very small sample size *may not be indicative* of performance effects at a larger scale.

  • @manjunathmahamuni4120
    @manjunathmahamuni4120 2 ปีที่แล้ว

    wow !! The Awesome techniques I got today from your channel, Thank you very much for this great knowledge !!

  • @johnwatkins39
    @johnwatkins39 5 ปีที่แล้ว +8

    OMG this is an awesome video. All the stuff I do at my work will be so much faster.

  • @Lutfitince
    @Lutfitince 5 ปีที่แล้ว +4

    AWESOME!!!
    That's the point of macros - speed!
    I am happy there are ppl like you

  • @meiwong5615
    @meiwong5615 4 ปีที่แล้ว +4

    Best VBA tutorials I’ve seen so far!

  • @przemekpolanowski8531
    @przemekpolanowski8531 2 ปีที่แล้ว

    Wow! What an ending! AdvancedFilter! This is tutorial is breathless action movie! Thank You Sir. Lord.

  • @gestionsigdata
    @gestionsigdata 7 หลายเดือนก่อน

    Perfect. Excellent. Thanks a lot to take the time to teach us how to become our codes faster. Greetings from Venezuela. New Follower.

  • @CharleyGR
    @CharleyGR 4 ปีที่แล้ว +1

    Thanks a lot mate! I watched this video and two days later I got to apply those tips to a code that was taking around 5s to run. After making the changes it runs instantaneously which is how it was supposed to be. Keep up the good work!

  • @jeffchen6556
    @jeffchen6556 ปีที่แล้ว

    You are the best VBA teacher of me, many thanks

  • @wintert6568
    @wintert6568 5 ปีที่แล้ว +7

    Great stuff! I use some of those techniques myself, the way you explained everything was definitely on point. My only critique would be to have the code comparisons side by side instead of flat out rewriting so viewers can see the difference if they pause the video. Might be helpful to some.

  • @jenshaglof8180
    @jenshaglof8180 4 ปีที่แล้ว +1

    Changing from reading directly from the sheet to loading the range into an array sped the macro up from 1 min 15 sec to only 1 second. Couldn't almost believe it! Amazing! :D

  • @jeremybuchanan4759
    @jeremybuchanan4759 ปีที่แล้ว

    Thanks for this - I look forward to applying advance filter on current project.

  • @tonysimoes9121
    @tonysimoes9121 5 ปีที่แล้ว +3

    That was impressive. Just turning off the calculations and screen updates saves a considerable amount of time.

  • @catones2868
    @catones2868 3 ปีที่แล้ว +2

    Hi, I'm a novice excel macro user and I find this very interesting. HOWEVER, I'm stumbling into problems trying to apply your technique which I think is very useful in learning how to optimize use of macros thru VBA. My question surrounds the microtimer formula you applied to test the speed of the macro. I want to do something similar for a macro I am working on where I format a query dump which 1) adds standard header and footer data; 2) renames certain column headers from ugly program field names to field names that are in english (e.g. instead of a field named ''wk_tm_dt" rename it to "date", etc. etc); 3) removes irrelevant columns with no meaningful data, 4) formats the date column to be read as the "day of the week", mm/dd/yyyy", & 5) formats number columns to x,xxx.xx format. The macro takes a significant amount of time and I see opportunites to speed up the macro based on your interesting points noted. For learning purposes, I want to replicate what you've done in order to measure the speed improvement. For my macro code, I added the start time at the beginning of my macro as how you wrote it (Dim dTime As Double *space* dTime = MicroTimer) & at the end of my macro code (Dbug.Print "Time is" & (MicroTimer - dTime) * 1000.
    However when I run my query, in VBA, it indicates "Time is= 0" What did I do incorrectly and how do I get my macro to show the time it took to run my macro like how you did? My macro takes around 10 seconds and I want to get that time down. Thanks for sharing the possibilities. All these years and all these wasted hours I could have saved had I learned your mode of thinking sooner.

    • @isaacmartinez3281
      @isaacmartinez3281 ปีที่แล้ว

      Did you ever find the answer to this? Same thing is happening with me

  • @wilgo58
    @wilgo58 5 ปีที่แล้ว +2

    Thank you sooo much. You have taken my code and shortened it's run time by quite a bit :)
    I still need to learn and understand the Advanced Filter a little better, but you have helped improve my workload significantly.
    I truly appreciate it :)

  • @shohanmohammadwasiuzzaman1111
    @shohanmohammadwasiuzzaman1111 4 ปีที่แล้ว

    Clearly, the guidelines have improved the speed of my code... excellent & simple techniques... thanks

  • @MarkCBB86
    @MarkCBB86 5 ปีที่แล้ว +1

    Probably one of the best VBA help videos I have seen, You explained each part very clearly without over speaking, Thank you.
    Things I learned from the video (MicroTimer, Resize, populating an Array straight from a range). I use assignment often, but looking forward to using it with Resize now.
    Favorite part of the Video is jumping to just using Advanced Filter - Sometimes we over code for things that there is already a built-in function for. Thanks again!!!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว +1

      Thanks Mark. That is high praise indeed. I'm glad you got so much from the video.

  • @ZEUSAIMIGHTY
    @ZEUSAIMIGHTY 5 ปีที่แล้ว +2

    Wow, I literally ran my VBA exactly how you said beginners do but that's only because that's how the record macro feature told me to. Very helpful!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      Thanks Nick. The macro recorder code is very different than real-world code. It leads to a lot of confusion.

  • @jeromecordel5908
    @jeromecordel5908 5 ปีที่แล้ว +3

    A major work !
    Very helpful and easy to integrate in all VBA code.
    Thank you so much

  • @onurtunc9468
    @onurtunc9468 2 ปีที่แล้ว

    Paul, you are always great teacher, i spent lots of times for copy and pasta data with criteria before but now this is amazing. Awesome. Thank you man.

  • @zachariahkane6833
    @zachariahkane6833 5 ปีที่แล้ว +23

    application.screenupdating = false
    is a must for every VBA user.

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      That's true.

    • @andrewlockwood6102
      @andrewlockwood6102 5 ปีที่แล้ว +3

      @@Excelmacromastery Only caveat is that whilst developing code, if it crashes and doesn't get to turn screen updating back on, you can find yourself stuck and potentially have to kill the program and lose any unsaved code. Sometimes it's prudent to only include the on/off code after you have solidified your code. My 2 cents worth. :-)

    • @thatguythatdoesstuff7448
      @thatguythatdoesstuff7448 5 ปีที่แล้ว +1

      @@andrewlockwood6102 In this case, you can create a macro in your personal.xlsb that turns all of it back on. You then designate that macro as a custom button in your quick access toolbar. Something goes wrong, runtime error or whatever, click the button, everything is turned back on.

    • @megapro125
      @megapro125 5 ปีที่แล้ว +1

      @@andrewlockwood6102 it only makes you unable to interact with the normal excel UI but not with the VBEditor Window. So just quickly write a new macro with "application.screenupdating = true" and everything is working fine again

    • @phpvbacoder9000
      @phpvbacoder9000 3 ปีที่แล้ว

      Best practice is always to implement error handling and Set back to defaults there

  • @trueindian2108
    @trueindian2108 2 ปีที่แล้ว

    These are very useful videos for me. I still want to know more about excel vba array programming.

  • @kolinsin23
    @kolinsin23 3 ปีที่แล้ว

    Didn't comment first time watching this, advanced filter method is my "go-to" for any code that needs a copy paste. On average, has mitigated 96% waste generation (time) based on original process. Thanks for sharing :)

  • @danfoltz9947
    @danfoltz9947 2 ปีที่แล้ว

    This is amazing. I wish I had found your site some time ago. I do have a couple of applications that I want to update. I am anxious to see how fast I can make them run. Thanks for this video.

  • @shabustinkslol
    @shabustinkslol 5 ปีที่แล้ว +2

    Wow, one of the best VBA videos I've ever seen. Very helpful and everything explained very straight forward! I like that I wouldn't necessarily use everything, but the step by step way you explained each thing you did makes it easy to apply where it makes the most sense. Well done!

  • @mtstans
    @mtstans 11 หลายเดือนก่อน

    Working on my nfl model for dfs games. (just a hobbiest) my old version simulated 1 game of the full slate in 181937/1000. After finding this and learning about arrays, my new code does the full slate and sims each game 100000 times in 585010/1000 seconds. Around a 3010X speed improvement. Learned a crap ton from you and have started using gpt as a coding better. I've done in one week what I couldn't do in 5 years. Cheers!

    • @Excelmacromastery
      @Excelmacromastery  11 หลายเดือนก่อน

      Thanks for the feedback. Glad you had such an improvement.

  • @JohnOvens
    @JohnOvens 5 ปีที่แล้ว +3

    Hi Paul, this is absolutely fantastic - I have watched it several times and made copious notes. I hope to be able to implement it in my personal stock recorder program
    John

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      Hi John,
      Great to hear from you as always. Thanks for the feedback. I will be releasing plenty of new videos in the coming weeks so key an eye out for them.
      Regards
      Paul

  • @karenjoy511
    @karenjoy511 11 หลายเดือนก่อน

    I've used arrays extensively, but haven't fiddled with Advanced Filter. This video has me wondering where I can change my code to use this cool feature!

  • @albertbatfinder5240
    @albertbatfinder5240 5 ปีที่แล้ว +1

    Really good. VBA code has an astonishing ability to yield to all sorts of improvements if you just nudge it a bit. But you gotta know where to look. One thing I will say is that you might do yourself a disservice by removing all the scaffolding, which is what you’ve done with the last step. I guarantee 100% that in a job like this, at some point you are going to want to do something a bit special with the records found. Three days after removing the loop, you’re gonna be putting it back in. The loop is the scaffolding. Don’t chuck it out lightly, or it’s Step 1: Optimise. Step 2: Deoptimise.

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      Thanks Albert. Glad you like it. It always depends on the requirements. Some situations the loop is better and for some the Advanced Filter.

    • @menecany6444
      @menecany6444 2 ปีที่แล้ว

      you say that it is better to use the loop then? sorry, english is not my native language.. i didnt understand quiet well

  • @MalinaC
    @MalinaC 4 ปีที่แล้ว

    I love this advanced filter trick! Thanks for sharing!

  • @alphonsoba8171
    @alphonsoba8171 5 ปีที่แล้ว +1

    As usual, thanks Paul. While I use the web a lot for examples, you are the only one I keep track of. Love your stuff.

  • @eltonm.t.873
    @eltonm.t.873 3 ปีที่แล้ว +12

    The advantage of using arrays is that beyond being the second fastest, one could write text files (csv) out of the data collected fom the source sheet, parse to databases, etc . Moreover, one could cancatenate values from different columns, perform math operations between column/rows values, etc, all from the dataset in memory. In a nutshell, one could make a lot of things out of the array data in memory as opposed of using the Advanced Filter method which is fast but you don't have the control of the aquired data from the source sheet. Adv. Filter is fast but only transfers data from one sheet to another as it is, then you'd have to process the dataset again if you wanted to do more things with it. I personally have used the array method for the reasons stated above, unless I just want to filter data.

  • @freeliberalminds
    @freeliberalminds 2 ปีที่แล้ว

    Great VBA helpful video tips from you sir Paul.

  • @nikolaifriendly7977
    @nikolaifriendly7977 7 หลายเดือนก่อน

    Let me expres my gratitude in VBA language:
    shInput.Range("Beginner").Resize (i, 1). Value =
    PaulOutput (i,1).Value 'Way to Perfection
    Thank you for your cristal clear lessons !

  • @orgilmas
    @orgilmas 3 ปีที่แล้ว

    I feel happy that I use these techniques all the time when vba calculation time matters on some projects.

  • @jennydrumm7223
    @jennydrumm7223 5 ปีที่แล้ว +1

    This is my first time seeing one of your videos and I'm impressed! Your explanation made complete sense, at least while I was watching and listening to you. I'm going to have to watch it a couple more times to get it to stay in my head, LOL! But your directions are clear, pretty easy to understand and the visuals going right along with your narration is VERY helpful to me! Thanks!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      Thanks for the feedback Jenny. I'm glad you got so much value from the video.

  • @anilthakkar2372
    @anilthakkar2372 2 ปีที่แล้ว

    You are just Great Sir with immense knowledge

  • @sum1razz
    @sum1razz ปีที่แล้ว

    hi Paul,
    I have been following along with all of your videos and level of understanding has been like x1000 level up. Can you make a video to explain about DoEvent and Application.OnKey in VBA. Even though there are few resources for this particular topics, they don't really explain in the way that you do!

  • @dimonovych
    @dimonovych 5 ปีที่แล้ว +2

    nothing new for me, but i like how consistently you explain)
    good job, definitely.

  • @iexmanoj5574
    @iexmanoj5574 3 ปีที่แล้ว

    Extremely useful techniques and Great video...can you please also show us how to make slicers faster.

  • @free3690
    @free3690 3 ปีที่แล้ว

    This is an awesome improvements. I did not know there were so many ways to speed up the code! Thanks for sharing these tips

  • @uberdonkey9721
    @uberdonkey9721 3 ปีที่แล้ว

    Beautiful. Most code I write is one off to alter 27 identical spreadsheets (businesses) but there is a big data filter sub I have which I use alot but is slow. I can apply all these techniques. Thankyou so much.

  • @jeffnixon4868
    @jeffnixon4868 5 ปีที่แล้ว +5

    Beautifully done, thank you! One suggestion: best to trap errors to turn stuff back on, otherwise can be an unpleasant surprise. Thanks again!

    • @Excelmacromastery
      @Excelmacromastery  5 ปีที่แล้ว

      That's true Jeff. When the code is live you definitely need that.

  • @grandpascryptothoughts651
    @grandpascryptothoughts651 5 ปีที่แล้ว

    What a huge smart education. You wake me up for VBA.

  • @pezad4187
    @pezad4187 2 ปีที่แล้ว

    Hello Paul, you write data from an array to cells cell-for-cell. This is the slowest way! Use the same way like reading data, the whole range. You do not need a loop. (11:25)

  • @sethvondardel5863
    @sethvondardel5863 5 ปีที่แล้ว +1

    Thank you so much for your great videos! You are great at explaining. Im learning a lot

  • @giacominoveltri4188
    @giacominoveltri4188 5 ปีที่แล้ว

    I was aware of some of the tricks, but not really aware of the really big ones. Thank you! Well done.

  • @jairbenavides4583
    @jairbenavides4583 4 ปีที่แล้ว

    Man thanks you very much, the runing time from my current project drop down from 2 and a half minutes to 3 seconds and I think it can go a lot lower. Thanks from Colombia 👍

  • @gene7433
    @gene7433 ปีที่แล้ว

    Hi Paul, thanks for this video I learnt some new stuff :)
    Just one thing I'm missing is when you use the advanced filter where exactly do you set the filter on the name "Imani"?
    Never mind, watched it again :)

  • @hafizsiraaj
    @hafizsiraaj 4 ปีที่แล้ว +1

    That is some very valuable techniques! Will definitely be using them to write/REwrite macros. Thanks! 😊

  • @CeliaAlvesSolveExcel
    @CeliaAlvesSolveExcel 5 ปีที่แล้ว +1

    Wonderful method comparison! Thank you, Paul! I use advanced filter a lot in my code but never measured the time difference when compared with the other methods.

  • @stevegarside5026
    @stevegarside5026 3 ปีที่แล้ว +1

    Hi Paul,
    Your videos and the way in which you explain them is to the highest level! Thanks for making our lives easier in the deep sea of code which we all love (some may hate I am sure haha).

  • @arsenik0890
    @arsenik0890 5 ปีที่แล้ว +2

    Great video! I was quite hesitant on using arrays in the past as I was considering the additional resources it would take considering the variant datatype. But that advanced filter is a game changer and is kinda new to me. I would love to try it soooon.

  • @SimoneGatta
    @SimoneGatta 4 ปีที่แล้ว +1

    In my experience I think the fastest way to copy a data table in from a sheet is using a filter is ADO recordset toghether with the CopyFromRecordset command. You can filter, order a table and perhaps you can do join query building a proper connection data source string...

  • @linaseptiani2994
    @linaseptiani2994 2 ปีที่แล้ว

    This is really cool video for me as a VBA beginner

  • @NiteLynr
    @NiteLynr 4 ปีที่แล้ว

    Wishing I'd another day or two off on furlough to binge-watch your vids but I'm up for work in 6 hours. Just wanted to say that most of us would have stopped when we got the report running in 1.5 secs...the rest is just arcane wizardry and I have a feeling that I'll be reworking a LOT of my older code in the next week or two!

  • @andrewbarron6374
    @andrewbarron6374 5 ปีที่แล้ว +2

    Outstanding! I have been doing it the slow way for years.

  • @大同胖皮猴
    @大同胖皮猴 4 ปีที่แล้ว

    Here's a fan from Taiwan!! Thanks for this useful video, I learned a lot.

  • @ph5i5
    @ph5i5 4 ปีที่แล้ว +1

    Great video. Even if intuitively, in the given scenario, filtering is THE WAY to go. if you faced this problem without knowing how to use VBA, you'd wanna use a filter (simple or advanced - up to the user), so why would you want VBA to do it the hard way and loop through every row? This is not a question to you, Paul, but to anyone who would want to code this type of scenario in any way other than: 1. simple filter, 2. advanced filter or 3. array (yes, i know this involves looping, but looping through arrays is WAY FASTER than cells). Still, i can believe there are people out there who would loop through cells, and i also agree, that there is a lot of unnecessary usage of 'Activate' and 'Select'. So thanks once again for explaining this very important topic in a concise and easy to follow video. I'm not a VBA expert by any stretch of imagination, but i have been using it for a while, and have seen many websites/tutorials/videos and i have to say, yours are definitely among the best :)

  • @dr.frankpeffekoven9834
    @dr.frankpeffekoven9834 5 ปีที่แล้ว

    Thank you for the great video. I will now search for videos about advanced filters. With this technique I could solve the runtime problem with my program.

  • @eddai84
    @eddai84 4 ปีที่แล้ว

    Thanks for sharing. Excellent techniques. God bless you.