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

  Рет қаралды 27,877

Excel Macro Mastery

Excel Macro Mastery

Күн бұрын

Пікірлер: 103
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Let me know in the comments below if you would like more videos like this👇
@mikheilchigogidze4224
@mikheilchigogidze4224 7 ай бұрын
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 7 ай бұрын
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 7 ай бұрын
I loved it
@luiss.l7904
@luiss.l7904 7 ай бұрын
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 6 ай бұрын
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 7 ай бұрын
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 7 ай бұрын
Glad you liked it
@Info-God
@Info-God 7 ай бұрын
The most efficient combination. Dictionaries+Arrays.
@barrygeldham390
@barrygeldham390 7 ай бұрын
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.
@eshaich
@eshaich 7 ай бұрын
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.
@dantealighieri8031
@dantealighieri8031 7 ай бұрын
You make excel coding very enjoyable to learn. i dont even know half of what you did but it was intriguing.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks. Glad you like it.
@Info-God
@Info-God 7 ай бұрын
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.
@RobertWoodman
@RobertWoodman 6 ай бұрын
That was quite impressive, Paul. I use your KZbin site often for ideas, tips, and tricks.
@RobGijrath
@RobGijrath 7 ай бұрын
That is very efficient. Please show us more videos like this.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks Rob
@stevegarside5026
@stevegarside5026 7 ай бұрын
Fantastic coding and described in a way that people can understand. Thanks for sharing!
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
You're welcome
@Tocotronic000000
@Tocotronic000000 7 ай бұрын
Fantastic tutorial. We need more like this. Keep up the excelent Work. Greetings from germany
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Glad you like it
@Elesario
@Elesario 7 ай бұрын
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.
@hammeedabdo.82
@hammeedabdo.82 7 ай бұрын
Thank you Paul, we need more videos like this.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Glad you like it
@BrittKinsler
@BrittKinsler 7 ай бұрын
Excellent video and looking forward to more! Thanks!
@joeburkeson8946
@joeburkeson8946 7 ай бұрын
Easier & faster what's not to like? Another fine tutorial with real world application, thanks.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
You're welcome
@janezklun
@janezklun 6 ай бұрын
Thank you Paula for such useful videos, yes more
@nadermounir8228
@nadermounir8228 7 ай бұрын
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 7 ай бұрын
Thanks. Glad you like it.
@stevec1835
@stevec1835 5 ай бұрын
Awsum, thanks for taking the time to make these videos. They are so helpfull...
@elecirlisboa9155
@elecirlisboa9155 7 ай бұрын
Excelente vídeo parabéns, aprendi como reduzir o tempo em algumas macros, obrigado!!
@kapibara2440
@kapibara2440 7 ай бұрын
Smart and clean. Great work Paul! Your videos are valuable 🎉
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks
@ΕλευθέριοςΠάντος
@ΕλευθέριοςΠάντος 7 ай бұрын
That was splendid indeed! Thank you very much!
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks
@benlinford_work
@benlinford_work 7 ай бұрын
Love it, Paul!
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks Ben
@iincitr
@iincitr 7 ай бұрын
Amazing. Thank you.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
You're welcome
@dermotbalson
@dermotbalson 7 ай бұрын
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 7 ай бұрын
There's zero reason the data will be lost
@brianminder2561
@brianminder2561 7 ай бұрын
Excellent! I vote for more.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks Brian
@Bhuvan_C_Paranji
@Bhuvan_C_Paranji 7 ай бұрын
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.
@mylife1131
@mylife1131 7 ай бұрын
Harika video için teşekkür ederim Paul.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
You're welcome
@ganeshs1360
@ganeshs1360 4 ай бұрын
Very well presented. I have a question. Is vbnullstring faster than using ""?
@egozMaster
@egozMaster 7 ай бұрын
you should remove the With statement as well
@rajuhubli2
@rajuhubli2 7 ай бұрын
Great video sir
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks
@strannostrannovasrr
@strannostrannovasrr 7 ай бұрын
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 7 ай бұрын
You can only do it with the first column. Resize the output range to the size of this column. Range(rowCount,1) = arr
@sandeepkothari5000
@sandeepkothari5000 7 ай бұрын
SURE, WE LIKE YOUR VIDEOS immensely & wany more
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks Sandeep
@sudheerallamuri7132
@sudheerallamuri7132 7 ай бұрын
Thank you Sir.. I like your Vedios ❤❤
@richardgreves6161
@richardgreves6161 7 ай бұрын
tried to download the code and I get Web server is returning an unknown error
@Info-God
@Info-God 7 ай бұрын
Type it. This way you learn.
@JithinDevan
@JithinDevan 7 ай бұрын
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 7 ай бұрын
You can call Shell and run DIR command from there.
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
I think that would be fast. You can easily send to a file
@Back1Ply
@Back1Ply 7 ай бұрын
Power query has from folder connector that lists files and last modified date
@JithinDevan
@JithinDevan 7 ай бұрын
Thank you all for suggestions
@PIESvcs
@PIESvcs 7 ай бұрын
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.
@sriranga188
@sriranga188 7 ай бұрын
Yes we need more videos
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Thanks
@kofigyebiadusei2205
@kofigyebiadusei2205 7 ай бұрын
When will make an introductory video for us who are beginners. Thank you
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Good suggestion.
@sasifexcelsolutions4509
@sasifexcelsolutions4509 6 ай бұрын
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
@stevetatterton
@stevetatterton 7 ай бұрын
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 7 ай бұрын
Using lbound is a defensive measure in case a zero based array used. But you'll get away using 1 in most cases.
@mustavogaia2655
@mustavogaia2655 2 ай бұрын
This is poetry
@pupazzetti2680
@pupazzetti2680 7 ай бұрын
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 7 ай бұрын
It would only make a difference if you had a large number of writes.
@wizardofaus8473
@wizardofaus8473 7 ай бұрын
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 7 ай бұрын
You're welcome.
@rahul7rock
@rahul7rock 7 ай бұрын
Dictionary and Array is a deadly combination as always
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Absolutely
@nivrin13
@nivrin13 7 ай бұрын
How do you calculate the speed of the macro?
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Using the Windows api timer
@Info-God
@Info-God 7 ай бұрын
Define TStart and TEnd, then the difference is the TLapse
@daves4026
@daves4026 7 ай бұрын
Bravo
@mback3713
@mback3713 7 ай бұрын
Try using Collection instead of Dictionary. ;)
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
Why? They won't be faster.
@nivrin13
@nivrin13 7 ай бұрын
Collection allows double entries, dictionary doesn't, so it's already filtering the data
@mback3713
@mback3713 7 ай бұрын
@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 7 ай бұрын
@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 7 ай бұрын
@@mback3713 Alright. I actually wanted to use the collection method in the past. This is a better approach. Will save it. Cheers!
@saketmishra1470
@saketmishra1470 6 ай бұрын
Paul, please help me to make my code as faster you have shown here
@Charles-m7j
@Charles-m7j 7 ай бұрын
How to improve it further: use literally anything but VBA.
@junkertom7766
@junkertom7766 6 ай бұрын
Tell me you are a clueless VBA hater without telling that you are a clueless VBA hater.
@Charles-m7j
@Charles-m7j 6 ай бұрын
@@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.
@markd.9538
@markd.9538 6 ай бұрын
​@@Charles-m7j Ranked... by who? Its a tool for a purpose. Yeah there's better languages out there; yeah its ugly; yeah it has poor object typing, and weak object security in parts... and yeah its not "fun" in the programming sense - but it has exceptionally good fit-for-purpose libraries when you have to crunch spreadsheets and data for insane business bosses who need to work in Office formats and need their little/big problem solved ASAP. Not everyone can be a L33t coder. Sometimes, spreadsheets pay the bills. VBA is ubiquitous - and exceptionally useful - in MANY environments.
@laurentbosc2896
@laurentbosc2896 6 ай бұрын
@@Charles-m7j 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 6 ай бұрын
And it is a programming language, literally speaking… not comparable to others ok, but it is powerful for other reasons as explained
@Hughahugha361
@Hughahugha361 7 ай бұрын
The code is nearly as fast as you deleting comments...
@Excelmacromastery
@Excelmacromastery 7 ай бұрын
I haven't deleted any comments😀
Python for VBA Developers in 30 Minutes
30:05
Excel Macro Mastery
Рет қаралды 12 М.
Can This Code Be Saved?  | VBA Code Audit
10:58
Excel Macro Mastery
Рет қаралды 11 М.
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 6 МЛН
5 Excel Tools Most Users Never Think to Use (Files Included)
12:34
MyOnlineTrainingHub
Рет қаралды 262 М.
How to get the Last Row in VBA(The Right Way!)
15:41
Excel Macro Mastery
Рет қаралды 166 М.
My 10 “Clean” Code Principles (Start These Now)
15:12
Conner Ardman
Рет қаралды 299 М.
Why You Should Think Twice Before Using Returns in Python
21:27
ArjanCodes
Рет қаралды 27 М.
Reduce VBA Errors by 90% (with this little-known Method)
16:59
Excel Macro Mastery
Рет қаралды 59 М.
5 Python Libraries You Should Know in 2025!
22:30
Keith Galli
Рет қаралды 56 М.
25 Nooby VBA Habits You Need to Ditch Right Now
8:42
Excel Macro Mastery
Рет қаралды 25 М.
10 Years of VBA Array Knowledge in 40 Mins
41:57
Excel Macro Mastery
Рет қаралды 23 М.
How to automate Excel with reusable Office Scripts | Excel Off The Grid
13:54
А я думаю что за звук такой знакомый? 😂😂😂
00:15
Денис Кукояка
Рет қаралды 6 МЛН