I Made this VBA Code 2,880,952% faster

  Рет қаралды 23,875

Excel Macro Mastery

Excel Macro Mastery

Ай бұрын

Join my Effective Excel VBA Course here: ▸bit.ly/3wDYEnX
I Made this VBA Code 2,880,952% faster
A user recently sent me Excel VBA code that was taking 6 hours to run and asked if I could somehow improve the speed. In this video I show how I made this code run in mere milliseconds with a few changes. If you want to avoid having slow VBA code in the future then this video is a must watch.
💻🔧 #VBA #VBAFast #VBASpeed
SUBSCRIBE TO THE CHANNEL: bit.ly/36hpTCY
DOWNLOAD THE CODE: shorturl.at/ltxLZ
Useful VBA Shortcut Keys
========================
Debugging:
Compile the code: Alt + D + L OR Alt + D + Enter
Run the code from the current sub: F5
Step into the code line by line: F8
Add a breakpoint to pause the code: F9(or click left margin)
Windows:
View the Immediate Window: Ctrl + G
View the Watch Window: Alt + V + H
View the Properties Window: F4
Switch between Excel and the VBA Editor: Alt + F11
View the Project Explorer Window: Ctrl + R
Writing Code:
Search keyword under cursor: Ctrl + F3
Search the word last searched for: F3
Auto complete word: Ctrl + Space
Get the definition of the item under the cursor: Shift + F2
Go to the last cursor position: Ctrl + Shift + F2
Get the current region on a worksheet: Ctrl + Shift + 8(or Ctrl + *)
To move lines of code to the right(Indent): Tab
To move lines of code to the left(Outdent): Shift + Tab
Delete a Line: Ctrl + Y(note: this clears the clipboard)

Пікірлер: 100
@Excelmacromastery
@Excelmacromastery Ай бұрын
Let me know in the comments below if you would like more videos like this👇
@mikheilchigogidze4224
@mikheilchigogidze4224 Ай бұрын
This is great. Thanks a lot! Can you please do a video, on how would you schedule an excel macro? Macro to run without opening an excel.
@jastonkong1409
@jastonkong1409 Ай бұрын
Your work is very inspiring. You keep me interested in learning VBA. Thank you so much for such selfless sharing! Also, never in a million year i would have thought that simple line of clearing contents could cause that much trouble! lol
@sweetdreams6697
@sweetdreams6697 Ай бұрын
I loved it
@luiss.l7904
@luiss.l7904 Ай бұрын
There is still one thing to work on: combined = data(i,2) & data (i,3) e data(i,4) has a N level of complexity This concatenation operation is done N(loop size) times unecessarily. Use worksheet function to vectorially create a single array with the already concatenated values of all rows.
@markd.9538
@markd.9538 Ай бұрын
This idea would have come in very handy for me about 4 years ago. I had to write complex (similar to this, but but non-trivial) scripts that ran across invoice support templates that checked and updated columns to the customer's very specific demands. The code had to look across about 120 columns of data, and the spreadsheets contained hundreds of thousands of rows. In the end it all worked but we had the same problem: the constant updates to the sheet during the process slowed it down to a crawl. Come due day, it would eat a huge chunk of the day for the person running and checking it. If I ever have to implement (or refactor) anything like this in the future, I'm going to be doing it your way! Thank you for the great advice here.
@HSkraekelig
@HSkraekelig Ай бұрын
Paul, I've been using your web site for hints and tricks for years now. I probably would have stopped at the first fix, but the second is 200% more brilliant. Don't change what doesn't need changing! More please.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Glad you liked it
@Info-God
@Info-God Ай бұрын
The most efficient combination. Dictionaries+Arrays.
@barrygeldham390
@barrygeldham390 Ай бұрын
Very interesting Paul. Just a rather pedantic point, 2.8 million percent is not 2.8 million times faster, only a mere 28,000 times faster. Still quite impressive.
@BrittKinsler
@BrittKinsler Ай бұрын
Excellent video and looking forward to more! Thanks!
@hammeedabdo.82
@hammeedabdo.82 Ай бұрын
Thank you Paul, we need more videos like this.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Glad you like it
@RobertWoodman
@RobertWoodman 19 күн бұрын
That was quite impressive, Paul. I use your KZbin site often for ideas, tips, and tricks.
@janezklun
@janezklun Ай бұрын
Thank you Paula for such useful videos, yes more
@user-xx5et3fj7b
@user-xx5et3fj7b Ай бұрын
That was splendid indeed! Thank you very much!
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks
@eshaich
@eshaich Ай бұрын
Pro as usual. btw I believe you can do it even faster with the "evaluate" VBA function. no loops and it does the calculation for all the range ows at once.
@RobGijrath
@RobGijrath Ай бұрын
That is very efficient. Please show us more videos like this.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks Rob
@kapibara2440
@kapibara2440 Ай бұрын
Smart and clean. Great work Paul! Your videos are valuable 🎉
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks
@stevegarside5026
@stevegarside5026 Ай бұрын
Fantastic coding and described in a way that people can understand. Thanks for sharing!
@Excelmacromastery
@Excelmacromastery Ай бұрын
You're welcome
@Tocotronic000000
@Tocotronic000000 Ай бұрын
Fantastic tutorial. We need more like this. Keep up the excelent Work. Greetings from germany
@Excelmacromastery
@Excelmacromastery Ай бұрын
Glad you like it
@stevec1835
@stevec1835 Күн бұрын
Awsum, thanks for taking the time to make these videos. They are so helpfull...
@dantealighieri8031
@dantealighieri8031 Ай бұрын
You make excel coding very enjoyable to learn. i dont even know half of what you did but it was intriguing.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks. Glad you like it.
@Info-God
@Info-God Ай бұрын
Dictionaries are a just like that: an array organised as you look at a ... dictionary. Try to organise a set of data as a ... dictionary....unique items.
@nadermounir8228
@nadermounir8228 Ай бұрын
Brilliant video Thank you very much for your effort and for showing us a real world example. I am currently enrolled in your course (just started)
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks. Glad you like it.
@iincitr
@iincitr Ай бұрын
Amazing. Thank you.
@Excelmacromastery
@Excelmacromastery Ай бұрын
You're welcome
@Elesario
@Elesario Ай бұрын
An alternative solution would be to set up a temporary column with a function that can detect whether the item is the first of the group or not, and then use that column to filter the data and clear the visible cells in the first column. Then it's simple to remove the filter and the helper column. It would work best with the calculation mode set manual and triggering the calculation for only the point prior to filtering. In the example provided it's unlikely to be faster, but it might scale better (haven't tested). The reason I suggest this is because moving data between the Excel and VBA engines can be slow, so sometimes you get better performance directly from the Excel calculation system (which is multithreaded), and you're only pushing a few commands at it from VBA's side.
@benlinford_work
@benlinford_work Ай бұрын
Love it, Paul!
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks Ben
@mylife1131
@mylife1131 Ай бұрын
Harika video için teşekkür ederim Paul.
@Excelmacromastery
@Excelmacromastery Ай бұрын
You're welcome
@brianminder2561
@brianminder2561 Ай бұрын
Excellent! I vote for more.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks Brian
@sudheerallamuri7132
@sudheerallamuri7132 Ай бұрын
Thank you Sir.. I like your Vedios ❤❤
@rajuhubli2
@rajuhubli2 Ай бұрын
Great video sir
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks
@joeburkeson8946
@joeburkeson8946 Ай бұрын
Easier & faster what's not to like? Another fine tutorial with real world application, thanks.
@Excelmacromastery
@Excelmacromastery Ай бұрын
You're welcome
@dermotbalson
@dermotbalson Ай бұрын
My preference is never to overwrite any original data, both because making an error may lose it forever, and also because in business, work needs to be checked, and you can't do that without the original data.
@notaras1985
@notaras1985 Ай бұрын
There's zero reason the data will be lost
@sandeepkothari5000
@sandeepkothari5000 Ай бұрын
SURE, WE LIKE YOUR VIDEOS immensely & wany more
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks Sandeep
@egozMaster
@egozMaster Ай бұрын
you should remove the With statement as well
@sriranga188
@sriranga188 Ай бұрын
Yes we need more videos
@Excelmacromastery
@Excelmacromastery Ай бұрын
Thanks
@Bhuvan_C_Paranji
@Bhuvan_C_Paranji Ай бұрын
Hi Paul, I have one issue from Power Bi data, Its taking long time to execute. please give me any idea to lessthan 1 minute to get the power bi data with filter options.
@sasifexcelsolutions4509
@sasifexcelsolutions4509 28 күн бұрын
Hi, thanks for this, question, how would I force only xlsb when the user want to save as a file, I want the dialog picker or with 365 only show xlsb to show, this was possible before 365 but don't know how to do it in 365
@strannostrannovasrr
@strannostrannovasrr Ай бұрын
Is it possible to dump only 1 column from a multi column variant array on a worksheet at once? I mean without using a for-next-loop?
@Excelmacromastery
@Excelmacromastery Ай бұрын
You can only do it with the first column. Resize the output range to the size of this column. Range(rowCount,1) = arr
@stevetatterton
@stevetatterton Ай бұрын
Do you need to use LBound of the arrays when it will be 1 unless you specify otherwise, which you don't do here as it's not needed? Or is iterating from LBound to UBound seen as more elegant? I would find 1 easier to use as the For statement is then less cumbersome.
@Excelmacromastery
@Excelmacromastery Ай бұрын
Using lbound is a defensive measure in case a zero based array used. But you'll get away using 1 in most cases.
@kofigyebiadusei2205
@kofigyebiadusei2205 Ай бұрын
When will make an introductory video for us who are beginners. Thank you
@Excelmacromastery
@Excelmacromastery Ай бұрын
Good suggestion.
@daves4026
@daves4026 Ай бұрын
Bravo
@JithinDevan
@JithinDevan Ай бұрын
Thank you Paul - is there any way to speed up below requirement? I need to list all filenames from a folder and their last modified dates into a table. The folder has over 20,000 files and it’s taking ~5 mins to run the macro.
@sinus2220
@sinus2220 Ай бұрын
You can call Shell and run DIR command from there.
@Excelmacromastery
@Excelmacromastery Ай бұрын
I think that would be fast. You can easily send to a file
@Back1Ply
@Back1Ply Ай бұрын
Power query has from folder connector that lists files and last modified date
@JithinDevan
@JithinDevan Ай бұрын
Thank you all for suggestions
@PIESvcs
@PIESvcs Ай бұрын
When I see this, I'm reminded that the Data, Advanced Filter allows Unique data items to be filtered in place or copied to another location (using header rows, I think). I am wondering if this may be faster using the native Excel operability. One question I had (and benefit to using Paul's method) is if we want to know the number of occurrences for each Unique entry, an additional array may be useful, for example, if all of those monitors were to be assigned their serial numbers, assigned to users, maintained and depreciated. I needed to do this for network hardware in 1988 using QuickBASIC before VBA.
@rahul7rock
@rahul7rock Ай бұрын
Dictionary and Array is a deadly combination as always
@Excelmacromastery
@Excelmacromastery Ай бұрын
Absolutely
@pupazzetti2680
@pupazzetti2680 Ай бұрын
Yet you could make it even faster by using `Value2` (as you have previously taught in other videos). Just for curiosity, how much faster?
@Excelmacromastery
@Excelmacromastery Ай бұрын
It would only make a difference if you had a large number of writes.
@wizardofaus8473
@wizardofaus8473 Ай бұрын
More videos like this please. Also, more videos not like this please. Basically, I would like more videos, as long as they are you teaching VBA. Thank you Paul
@Excelmacromastery
@Excelmacromastery Ай бұрын
You're welcome.
@richardgreves6161
@richardgreves6161 Ай бұрын
tried to download the code and I get Web server is returning an unknown error
@Info-God
@Info-God Ай бұрын
Type it. This way you learn.
@YO-BIZZY
@YO-BIZZY Ай бұрын
MATT PARKER OPTIMISES CODE
@nivrin13
@nivrin13 Ай бұрын
How do you calculate the speed of the macro?
@Excelmacromastery
@Excelmacromastery Ай бұрын
Using the Windows api timer
@Info-God
@Info-God Ай бұрын
Define TStart and TEnd, then the difference is the TLapse
@mback3713
@mback3713 Ай бұрын
Try using Collection instead of Dictionary. ;)
@Excelmacromastery
@Excelmacromastery Ай бұрын
Why? They won't be faster.
@nivrin13
@nivrin13 Ай бұрын
Collection allows double entries, dictionary doesn't, so it's already filtering the data
@mback3713
@mback3713 Ай бұрын
@nivrin13 um.... collection will error if you try to retrieve an element from it that is not in the collection. you use `on error resume next` then in your loop check the collection `_ = col[key]`, then switch to do something `if err.number then` and don't forget to `err.clear` after failing to retrieve a value. it works... a little hokey, but is faster than `if key in dict`
@mback3713
@mback3713 Ай бұрын
@Excelmacromastery collection is "native" and doesn't require an import - and is more lightweight and faster than dictionary. It is a little "hokey" as you need to use error handling (the native "Err" object) to detect if a key/value pair exists in the collection, but... try it... sounds like you may be a little surprised at the result.
@nivrin13
@nivrin13 Ай бұрын
@@mback3713 Alright. I actually wanted to use the collection method in the past. This is a better approach. Will save it. Cheers!
@saketmishra1470
@saketmishra1470 20 күн бұрын
Paul, please help me to make my code as faster you have shown here
@user-gj3kz7cm3x
@user-gj3kz7cm3x Ай бұрын
How to improve it further: use literally anything but VBA.
@junkertom7766
@junkertom7766 Ай бұрын
Tell me you are a clueless VBA hater without telling that you are a clueless VBA hater.
@user-gj3kz7cm3x
@user-gj3kz7cm3x Ай бұрын
@@junkertom7766 it is literally ranked the worst programming language. Personally I don’t think that is fair because it isn’t a real programming language.
@laurentbosc2896
@laurentbosc2896 Ай бұрын
@@user-gj3kz7cm3x ok and what else ? in the real World Vba is probably one of the most used. So this is a very simple view to tell that. And it should ont be taken alone but as one element of the Excel toolbox. With Power Query and power pivot, it gives powerful possibilities very easily, without any extra installation. This is why it is very used and so popular.
@laurentbosc2896
@laurentbosc2896 Ай бұрын
And it is a programming language, literally speaking… not comparable to others ok, but it is powerful for other reasons as explained
@Hughahugha361
@Hughahugha361 Ай бұрын
The code is nearly as fast as you deleting comments...
@Excelmacromastery
@Excelmacromastery Ай бұрын
I haven't deleted any comments😀
@elecirlisboa9155
@elecirlisboa9155 Ай бұрын
Excelente vídeo parabéns, aprendi como reduzir o tempo em algumas macros, obrigado!!
@MJLCabral
@MJLCabral Ай бұрын
FANTASTIC!!!!! More videos!!!!!
@Excelmacromastery
@Excelmacromastery Ай бұрын
No problem 😀
How to get the Last Row in VBA(The Right Way!)
15:41
Excel Macro Mastery
Рет қаралды 150 М.
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 8 МЛН
Китайка и Пчелка 4 серия😂😆
00:19
KITAYKA
Рет қаралды 3,8 МЛН
ТАМАЕВ vs ВЕНГАЛБИ. Самая Быстрая BMW M5 vs CLS 63
1:15:39
Асхаб Тамаев
Рет қаралды 4,7 МЛН
Extracting Comments from Excel Sheet -  VBA Automation Tips
11:10
Class Modules in VBA: Made Super Simple
17:43
Excel Macro Mastery
Рет қаралды 29 М.
Can This Code Be Saved?  | VBA Code Audit
10:58
Excel Macro Mastery
Рет қаралды 10 М.
7 HIDDEN Apps in Microsoft 365 that will EXPLODE Productivity
28:35
Jonathan Edwards
Рет қаралды 139 М.
Using Python with Power BI
14:54
Power BI Life
Рет қаралды 8 М.
RAG from the Ground Up with Python and Ollama
15:32
Decoder
Рет қаралды 24 М.
The UNBELIEVABLE Features of the 2023 Hyundai Palisade!
20:08
Ed's Garage
Рет қаралды 118 М.
Use Excel VBA to Read API Data
20:48
Excel Macro Mastery
Рет қаралды 130 М.
How to Customize Controls in Excel VBA
18:23
Excel Macro Mastery
Рет қаралды 11 М.
Enums(Enumeration): The Key to Cleaner, More Efficient VBA Code
9:58
Excel Macro Mastery
Рет қаралды 29 М.
ВЫ ЧЕ СДЕЛАЛИ С iOS 18?
22:40
Overtake lab
Рет қаралды 134 М.
Хотела заскамить на Айфон!😱📱(@gertieinar)
0:21
Взрывная История
Рет қаралды 3,2 МЛН