Hi all,
Problem:
Our user has an Excel 2003 workbook with some iterative calculations. It runs for 10 mins only on Window XP. When they upgrade to Win 7 (64-bit), the same workbook runs for an hour. It works but extremely slow. Based on that, they try to run on Win 7 (32-bit), it finally goes to 20 mins. As the workbook runs repeatly, the one-hour workbook turns to days overhead.
Analysis:
We get this workbook for analysis. The structure is as follow:
1. It runs a simple loop for 10,000 times in VBA macro.
2. For each loop, it mainly performs two tasks, says task a, task b.
(a) It is to re-calculate Sheet1. i.e. Sheets("Sheet1").Calculate. In Sheet1, there is a formula in cell H1 to read a record from Sheet2 using =INDEX(Sheet2!$B$4:$L$65536,C3,2), where C3 is just a running index from 1 to 10,000. Then Sheet1 contains a list of records and formula to refer to cell H1.
(b) It is to accumulate the range value from another range using:
Range("AP8:AR368").Copy
Range("BC4:BE364").PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
The workbook is simply saved as Excel 2010 format. Then check the performance. We find that 50% of its time spends in the above coded statements, i.e. INDEX, Copy and PasteSpecial. We have tried to replace them by another VBA code but the performance is even much worse.
Question:
i) Any hints on the slow performance of Excel in Win 7 (64-bit)?
ii) As our users have to go to Win 7 (64-bit) from other constraint, is there any suggestion to improve the performance or tuning?
Thanks a lot.
Regards,
Antony