Copying formulas down by VBA will be slow and then the array formula will
still have to calculate so what you are asking for will be slower, not
faster, except for small numbers of rows.
As an experiment I created a formula in A1:
=IF($K$1=1,"",SUMPRODUCT((M1:Z10000)*(N1:N10000)))
and copied it across to J1 and then down to Row 1037 - some 10,370 formulas
Deleting the 1 from K1 caused the SUMPRODUCT() part to calculate and it took
about 10 minutes to calculate.
Entering the 1 back into K1 whereupon only the $K$1=1,"" part calculated
caused an almost instantaneous recalculation, certainly much too fast for me
to be manually time it.
It follows therefore that the fastest way will be :
=IF(ROW()-6>$B$1,"",<Your formula>)
That way the only array formulas that will be calculate are those in the
rows up to the value in B1 and they would have to have been calculated your
way anyway.
--
HTH
Sandy
In Perth, the ancient capital of Scotland
and the crowning place of kings
(e-mail address removed)
Replace @mailinator.com with @tiscali.co.uk