Excel偏移性能增益bij添加if()?回答;没有

时间:2018-01-22 00:17:28

标签: excel performance offset

更新 使用IF()语句可以减轻易失性函数。见下面的答案。 1

我刚刚听说我的excel表需要在马铃薯速度的笔记本电脑上运行......

会;

=IF(A1="Test"** ; OFFSET(B5 ; MATCH(C8 ; G10:G15) ; OFFSET(B5 ; MATCH(C8 ; G9:F9)) ; 0)

比偏移函数更快

=OFFSET(B5 ; MATCH(C8 ; G10:G15) ; OFFSET(B5 ; MATCH(C8 ; G9:F9)) ; 0)

我的直觉是肯定的......但如果"未使用"我无法找到明确的答案。 IF()函数的一部分未被计算或" volatile"。

我在纸张上有大约120个偏移功能,具有200个MATCH功能。根据很多变量,50和90之间的偏差实际上一次用于结果。

我希望收到你的回复,

柯恩。

PS;如果我将功能和零切换正确,它不会有所作为吗? PS;这将是一个临时修复,直到我可以把东西放入(更快?)索引函数。

更新 使用IF()语句可以减轻易失性函数。

1 个答案:

答案 0 :(得分:0)

Last I read,尝试使用IF短接易失性函数仍会导致执行Volatile函数,即使它在语句的FALSE部分。所以你想要做的是删除易失性OFFSET函数,而不是试图将其短路。 INDEX函数可以返回动态范围,因此我可以使用它。请参阅我在Can Excel's INDEX function return array?

的回答

查尔斯·威廉姆斯就此事:

在公式中使用volatile函数会将包含公式的单元格标记为volatile,即使volatile函数永远不会被执行:

  • = IF(1< 2,99,NOW())将始终返回99并且永远不会调用易失性NOW()函数,但是包含IF公式的单元格 将被视为易变,(感谢Stephen Bullen的指点 这个。)。
  • 如果单元格A1包含= NOW()则= IF(1 <2,99,A1)将始终返回99, 但含有IF配方的细胞不会被视为 挥发性的。