I’m trying to compare two Excel files and store what’s only there in the new file in one sheet and store what is only there in the old one in another sheet. (Basically new - old = sheet1 and old - new = sheet2.) One SO answers suggest to loop through all cells and do a simple comparison. I’m (very) new to VBA and Macros so I don’t know how to do this. How is it done (or where can I learn this)?
I’m trying to compare two Excel files and store what’s only there in the
Share
Do NOT loop through all cells!! There is a lot of overhead in communications between worksheets and VBA, for both reading and writing. Looping through all cells will be agonizingly slow. I’m talking hours.
Instead, load an entire sheet at once into a Variant array. In Excel 2003, this takes about 2 seconds (and 250 MB of RAM). Then you can loop through it in no time at all.
In Excel 2007 and later, sheets are about 1000 times larger (1048576 rows × 16384 columns = 17 billion cells, compared to 65536 rows × 256 columns = 17 million in Excel 2003). You will run into an “Out of memory” error if you try to load the whole sheet into a Variant; on my machine I can only load 32 million cells at once. So you have to limit yourself to the range you know has actual data in it, or load the sheet bit by bit, e.g. 30 columns at a time.
To compare to a sheet in a different workbook, open that workbook and get the sheet as follows: