View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.misc
JLatham JLatham is offline
external usenet poster
 
Posts: 3,365
Default Optimising calculation time

Yes, thanks for reminding me. I've had that link laying around for a while.
There are some potential pitfalls in it though - not the author's fault;
comes from the actual implementation of 2007 (the article was written as of
Beta 2).
Specifically at this point I'm thinking of VBA (or user defined function)
development. There are situations involving some commands (no, sorry, don't
have a list but I know that RND() is one) in VB on a system with multi-core
CPUs that are distinctly slower than on a single-core system. By distinctly,
I mean as in the RND() should have been called 140 times, but on a multi-core
system it gets called 11,000+ times. Oops.

"ShaneDevenshire" wrote:

Hi,

Here is an extensive discussion of this topic:

http://msdn.microsoft.com/en-us/library/aa730921.aspx

with lots of recommendations.


--
Thanks,
Shane Devenshire


"JLatham" wrote:

I need to ask at least one question before continuing: In your formula,
where it shows IF(Z20, should that be $Z2 or $Z$2 instead of just plain Z.
If it is just Z2, then that value is going to become AA2, AB2, AC2, etc.
Just need to know if that is the intent or not.

My first impulse is to tell you to throw $$ and hardware at it: either
faster machine to get your performance under 2007 back as it was with 2003,
or to come up with a machine you can retrofit with 2003 to use at time
critical moments.

" wrote:

Hi,

I'm currently using a spreadsheet which calculates decay rates. The
spreadsheet consists of 60 calculation columns by n rows (n varies
depending on how many samples I use). The spreadsheet works as
follows:

In cell X1 the user puts the decay rate (i.e. 1%)
In cell D2 the user puts the starting value (i.e. 100)
In cell Z2 the user puts the initial value to be subtracted from the
starting value (i.e. 10)

In cell AB2, there is the fomula
=IF(SUM($D2-SUM($AA2:AA2)0),IF(Z20,MIN((AA2*(1-$X$1)),SUM($D2-
(SUM($AA2:AA2)))),0),0)
which is dragged 60 columns to the right.

Output in cells AB2 and onwards would be 100, 99, 98, 97 etc until the
sum of all the values exceeds the starting value.

In Excel 2003 this spreadsheet would calculate in a matter of
seconds. However, since my department has upgraded to Excel 2007
(this is now a native 2007 spreadsheet, not a 2003 worksheet in
compatibility mode) this spreadsheets opening/calculating and,
particularly, saving time has increased exponentially. If the
spreadsheet contains more than 3000 or so rows, I now have to leave
the spreadsheet to save overnight (!).

Can someone help me to either optimise the spreadsheet or the formulas
within it so that I don't have to wreck my sleeping pattern everytime
I have to perform some urgent calculations?

Thanks,
Dave