更新 使用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()语句可以减轻易失性函数。
答案 0 :(得分:0)
Last I read,尝试使用IF短接易失性函数仍会导致执行Volatile函数,即使它在语句的FALSE部分。所以你想要做的是删除易失性OFFSET函数,而不是试图将其短路。 INDEX函数可以返回动态范围,因此我可以使用它。请参阅我在Can Excel's INDEX function return array?
的回答查尔斯·威廉姆斯就此事:
在公式中使用volatile函数会将包含公式的单元格标记为volatile,即使volatile函数永远不会被执行: