How to make your Excel VBA code run 1000 times faster

Поділитися
Вставка
  • Опубліковано 24 лис 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
      ua-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.

  • @luciorlc
    @luciorlc 4 роки тому +3

    I thank God because people like you exist.

  • @spamdump4459
    @spamdump4459 4 роки тому +25

    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.

  • @tequilacollins
    @tequilacollins 5 років тому +30

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

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

  • @christophseyfarth8018
    @christophseyfarth8018 5 років тому +6

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

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

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

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

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

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

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

  • @esrAsnataS
    @esrAsnataS 3 роки тому +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!!

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

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

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

  • @paulblackwood1273
    @paulblackwood1273 3 роки тому +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.

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

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

  • @itsdaj
    @itsdaj Рік тому

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

  • @theexcelproject6973
    @theexcelproject6973 2 роки тому

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

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

  • @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?

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

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

  • @EduardoRibeiroEdu
    @EduardoRibeiroEdu 3 роки тому

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

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

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

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

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

  • @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
      ua-cam.com/users/ExcelAutomationByMudit

  • @meiwong5615
    @meiwong5615 4 роки тому +4

    Best VBA tutorials I’ve seen so far!

  • @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)

  • @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 ua-cam.com/video/RNqd89K_bbU/v-deo.html

  • @tonysimoes9121
    @tonysimoes9121 5 років тому +3

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

  • @przemekpolanowski8531
    @przemekpolanowski8531 3 роки тому

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

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

  • @orgilmas
    @orgilmas 4 роки тому

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

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

  • @AniManuSCh
    @AniManuSCh Рік тому +1

    How would you make an array from multiple tables in the same sheet to store values? context: lets say you want to save some kind of profiles that you can switch / load any other time, like having a table with check-boxes, some checked and some unchecked, and you want to save it to be available to load another time

  • @guybloomfield5820
    @guybloomfield5820 4 роки тому

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

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

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

  • @Lutfitince
    @Lutfitince 5 років тому +4

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

  • @tocobern
    @tocobern 5 років тому

    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.

  • @johnwatkins39
    @johnwatkins39 5 років тому +8

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

  • @jeffchen6556
    @jeffchen6556 Рік тому

    You are the best VBA teacher of me, many thanks

  • @grandpascryptothoughts651
    @grandpascryptothoughts651 5 років тому

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

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

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

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

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

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

  • @shohanmohammadwasiuzzaman1111
    @shohanmohammadwasiuzzaman1111 4 роки тому

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

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

  • @martiancocian6301
    @martiancocian6301 2 роки тому

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

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

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

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

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

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

  • @Mraungnaingthu1
    @Mraungnaingthu1 2 роки тому

    Your live explanation is precious for me.

  • @dimonovych
    @dimonovych 5 років тому +2

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

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

  • @jeromecordel5908
    @jeromecordel5908 5 років тому +3

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

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

  • @garagistes1
    @garagistes1 5 років тому +1

    Assignment - *jaw drops and thinks about all the good times that i've wasted copying and pasting*

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

  • @大同胖皮猴
    @大同胖皮猴 5 років тому

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

  • @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)

  • @giacominoveltri4188
    @giacominoveltri4188 5 років тому

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

  • @danteencinas7020
    @danteencinas7020 2 роки тому

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

  • @yogeshkar
    @yogeshkar 5 років тому

    Wow... Something everyone should know if you are using VBA

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

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

  • @andrewbarron6374
    @andrewbarron6374 5 років тому +2

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

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

  • @rajasilan7118
    @rajasilan7118 5 років тому

    Didn't know about currentregion till I watched your video. You have helped alot and I wished I had knew about this alot more sooner. Thanks man

    • @Excelmacromastery
      @Excelmacromastery  5 років тому

      Thanks Rajasilan. I hope this video is useful for you.

  • @Nutflash1978
    @Nutflash1978 5 років тому

    Awesome video been using vba for 6 years and never realised you could do this stuff

    • @Excelmacromastery
      @Excelmacromastery  5 років тому

      That's great to hear. Glad to be making these techniques available to everyone.

  • @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 👍

  • @nikolaifriendly7977
    @nikolaifriendly7977 9 місяців тому

    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 !

  • @trueindian2108
    @trueindian2108 3 роки тому

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

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

  • @manjunathmahamuni4120
    @manjunathmahamuni4120 2 роки тому

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

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

  • @kaisun1661
    @kaisun1661 4 роки тому

    Thank you, I tried the first two steps, and increase 10 fold of the speed of my worksheet. Thank you for sharing!

  • @mtstans
    @mtstans Рік тому

    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  Рік тому

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

  • @gestionsigdata
    @gestionsigdata 8 місяців тому

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

  • @karenjoy511
    @karenjoy511 Рік тому

    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!

  • @goombakiwi
    @goombakiwi 5 років тому +2

    I typically try to use a "sort" to group my search data then use "find" to identify the first row then a second find (xl previous) to identify the last row. With these two location parameters I can then assign value between the first row and last; that my results are located in. I know this is significantly faster than trying to loop through each available value. I haven't considered timing it compared to using an array.

    • @vaakdemandante8772
      @vaakdemandante8772 Рік тому

      it may be what the advance filter does internally under the hood - it would be interesting to actually see the timing comparison between the advanced filter and your method to be sure which one is really faster

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

  • @blakemaster5054
    @blakemaster5054 5 років тому

    Thanks Paul. This is the best video I've ever see in learning VBA for mastery. Thanks, i will watch all your 13 videos.

  • @Impedancenetwork
    @Impedancenetwork 4 роки тому +1

    Holy shit! That is a significant time saving. Why didn't I watch this video years ago?

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

  • @raheem0046
    @raheem0046 5 років тому +1

    Very nice video
    I learned some of these techniques after years of learning VBA
    Thank you for sharing
    Can you make a video on getting three or more tablets from Oracle database. Then make relationship in power query or excel and then show the results in normal excel spreadsheet. Basically this question is about Primavera database

  • @jeremybuchanan4759
    @jeremybuchanan4759 Рік тому

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

  • @jawalim1996
    @jawalim1996 5 років тому +1

    love from first video.. This is impressive and extremely useful.
    You are outstanding in both, knowledge and ease of explaining complicated stuff.
    Thank you for sharing. Would love to see more of practical videos like this from you.

  • @TimHief
    @TimHief 5 років тому +1

    Great stuff. At the end of your code you should take the objects you SET and SET them to equal NOTHING. Excel is notorious for not cleaning itself up even when code has completed execution. It's just part of good housekeeping.

    • @Excelmacromastery
      @Excelmacromastery  5 років тому +1

      Thanks Tim.
      Objects will be deleted when they go out of Scope. I know it's good practice to set to nothing but I don't know if it makes much difference.