我正在使用〜300个单元格的公式,它使用INDIRECT函数动态获取地址,但它减慢了计算时间。
请建议我另一种方法来加快计算速度。
我已经完成了基础知识,因为它有宏,屏幕更新= false,计算= xlmanual。
=SUMIFS(Sheet1!$L:$L,Sheet1!$I:$I,Bookings_QTD!$F51,Sheet1!$B:$B,Bookings_QTD!I$2,INDIRECT($I$8),$K$8,Sheet1!$C:$C,$M$8)/1000000
此处单元格$ I $ 8是动态的,其中值将根据例如:-Sheet5变化!$ A:$ A,Sheet5!$ B:$ B ...
$I$8=Sheet5!$E:$E
我需要将它用于许多细胞〜400 +以及其他标准。
请使用更好的公式或方法来减少计算时间 提前致谢
答案 0 :(得分:1)
INDIRECT()
会很慢,因为它是一个易失性函数。即,每次工作簿中任何单元格发生变化时,都会触发它。
如果您的单元格值相对静止。即如果你间接提到细胞" B6"并且您希望B6
的内容保持不变,并且只希望您的功能输入发生变化,例如来自" B6"到" Z8",您可以使用以下代码:
Function MyIndirect(RangeStr as String) as Variant
MyIndirect = ActiveSheet.Range("RangeStr").Value
End Function
这应该有效。如果你需要刷新'这个值,只需运行Application.Calculation
(即按Ctrl-Alt-F9
)