ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Slow Calculation Index and Match Array Formula. (https://www.excelbanter.com/excel-programming/377975-slow-calculation-index-match-array-formula.html)

Little Penny

Slow Calculation Index and Match Array Formula.
 
I have a worksheet that uses 3 index and match array formulas
referencing two different worksheets (JNP) and (Shipped) in the same
workbook to update its information.

These referencing worksheets (JNP) and (Shipped) have 7 columns and
could have up to 3000 rows of information. My problem is whenever
information is changed in (JNP) and (Shipped) its takes a long time
for excel to update the information my main worksheet, is there
anything that can be done to speed up the calculation. I've seen it
take up to 5 minutes to finish calculation during which time excel is
basically unusable. Here are my formulas. Which can go down at most
150 rows. For Now.....



=IF(ISNA(MATCH(1,(TRIM('JNP'!$A$1:$A$2988)=TRIM(F8 ))*(TRIM('JNP'!$D$1:$D$2988)=TRIM(K8)),0)),"
",INDEX('Jets Jobs in
Process'!$C$1:$C$2988,MATCH(1,(TRIM('JNP'!$A$1:$A$ 2988)=TRIM(F8))*(TRIM('JNP'!$D$1:$D$2988)=TRIM(K8) ),0)))

=IF(ISNA(MATCH(1,(TRIM(Shipped!$B$1:$B$3000)=TRIM( F8))*(TRIM(Shipped!$D$1:$D$3000)=TRIM(K8)),0)),"No t
Shipped",INDEX(Shipped!$C$1:$C$3000,MATCH(1,(TRIM( Shipped!$B$1:$B$3000)=TRIM(F8))*(TRIM(Shipped!$D$1 :$D$3000)=TRIM(K8)),0)))

=IF(ISNA(MATCH(1,(TRIM(Shipped!$B$1:$B$3000)=TRIM( F8))*(TRIM(Shipped!$D$1:$D$3000)=TRIM(K8)),0)),"No t
Shipped",INDEX(Shipped!$D$1:$D$3000,MATCH(1,(TRIM( Shipped!$B$1:$B$3000)=TRIM(F8))*(TRIM(Shipped!$D$1 :$D$3000)=TRIM(K8)),0)))


Thanks Little Penny

Stephen Rasey[_3_]

Slow Calculation Index and Match Array Formula.
 
You are repeating work in the TRIM statements. Possibly doing the trim on
all 3000 rows for each row you are trying to match. You are also repeating
work in the Match.
You must calculate intermediate results once and save them to intermediate
ranges.

Suggestion: Bring over TRIM('JNP'!$A$1:$A$3000) once into another range
"TrimmedA" in the matching worksheet. Likewise for TrimmedD
Save the result {TrimmedA=Trim(Fx:Fy)}into TrimA01.
Save the result of TrimA01*TrimmedD into TrimRow.
Finally save the Match into a range: MATCH(1,(TRimRow=TRIM(K8)),0) --
range MatchRow
Now your formula becomes: =IF(ISNA(Matchrow),"
",INDEX('Jets Jobs in Process'!$C$1:$C$2988,Matchrow,1)

-Stephen Rasey
Houston

"Little Penny" wrote in message
...
I have a worksheet that uses 3 index and match array formulas
referencing two different worksheets (JNP) and (Shipped) in the same
workbook to update its information.






All times are GMT +1. The time now is 05:19 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com