Array formulas slows spreadsheet

H

Huggy

I have a added number of array formulas in a spreadsheet that has slowed down
working on the spreadsheet because it recalculates all the array formulas
each time you enter / change data.

The array formulas are on a separate worksheet to the main data worksheet.

How do you speed this up or how can you manually recalculate the array
formulas only and allow all other formulas on the main data worksheet to
re-calculate automatically. I do not want to change auto recalc to manual
recalc in tools options.

example of one of the array formulas is;

=INDEX(OFFSET(INDIRECT(""&$H$1&"!C$1"),0,0,MATCH(TODAY(),INDIRECT(""&$H$1&"!$A:$A"),1),1),SMALL(IF(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,MATCH(TODAY(),INDIRECT(""&$H$1&"!$A:$A"),1),1)=$B6,ROW(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,MATCH(TODAY(),INDIRECT(""&$H$1&"!$A:$A"),1),1))),COUNTIF(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,MATCH(TODAY(),INDIRECT(""&$H$1&"!$A:$A"),1),1),$B6)))

Thanks for the help
 
J

Jacob Skaria

You are referring to the entire column. Do you really want to refer A:A..?

Change that to A1:A1000 or to a suitable max limit.

If this post helps click Yes
 
H

Huggy

Hi Jacob,

The length of the data in the column will change and possibly go past 1000.
Is there a way we can modify the formual to start at A1 and go to the last
cell with data in column a?

Thanks
 
J

Jacob Skaria

Try the below

In a separate cell say J1 type the formula
=MATCH(TODAY(),INDIRECT("'"&$H$1&"'!$A:$A"),1)

'Then modify the formula to replace with that cell reference..
=INDEX(OFFSET(INDIRECT("&$H$1&"!C$1"),0,0,J1,1),
SMALL(IF(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,
J1,1)=$B6,ROW(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,
J1,1))),COUNTIF(OFFSET(INDIRECT(""&$H$1&"!D$1"),0,0,J1,1),$B6)))

If this post helps click Yes
 
J

Jacob Skaria

Correction..

In a separate cell say J1 type the formula
=MATCH(TODAY(),INDIRECT("'"&$H$1&"'!$A:$A"),1)

'Then modify the formula to replace with that cell reference..
=INDEX(OFFSET(INDIRECT("'"&$H$1&"'!C$1"),0,0,J1,1),
SMALL(IF(OFFSET(INDIRECT("'"&$H$1&"'!D$1"),0,0,
J1,1)=$B6,ROW(OFFSET(INDIRECT("'"&$H$1&"'!D$1"),0,0,
J1,1))),COUNTIF(OFFSET(INDIRECT("'"&$H$1&"'!D$1"),0,0,J1,1),$B6)))

If this post helps click Yes
 
A

Ashish Mathur

Hi,

If you expect the range to keep expanding, convert it to a List (Ctrl+L).
Once you convert a range to a List, it expands as data is added by rows.

--
Regards,

Ashish Mathur
Microsoft Excel MVP
www.ashishmathur.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top