替代间接用于Sumifs?

时间:2014-07-07 15:29:42

标签: excel excel-formula excel-2007 excel-2010

我正在使用〜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 +以及其他标准。

请使用更好的公式或方法来减少计算时间 提前致谢

1 个答案:

答案 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