Excel 偏移性能增益 bij 添加 if()?回答;不
Excel Offset performance gain bij adding if()? Answer; NO
更新
无法使用 IF() 语句来缓解可变函数。请参阅下面的答案。 1
我刚刚听说我的 excel sheet 需要 运行 在土豆速度笔记本电脑上...
会;
=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() 函数的 "unused" 部分或 "volatile",我找不到明确的答案。
我在 sheet 上有大约 120 个偏移函数和 200 个 MATCH 函数。根据很多变量,50 到 90 之间的偏移量实际上一次用于结果。
希望收到你的来信,
科恩
PS;如果我切换功能和零,那不会有什么不同吗?
PS;在我可以将内容放入(更快?)索引函数之前,这将是一个暂时的解决方案。
更新
无法使用 IF() 语句来缓解可变函数。
Last I read, trying to short circuit a Volatile Function with IF still results in the Volatile function being executed, even if it is in the FALSE part of the statement. So what you want to do is remove the volatile OFFSET function rather than try to short circuit it. The INDEX function can return a dynamic range, so that's what I'd use. See my answer at
以下是查尔斯·威廉姆斯对此事的看法:
在公式中使用易变函数会将包含公式的单元格标记为易变,即使从未执行易变函数也是如此:
- =IF(1<2,99,NOW()) 将始终 return 99 并且永远不会调用易失性 NOW() 函数,但包含 IF 公式的单元格
将被视为 volatile,(感谢 Stephen Bullen 的指点
这个出来)。
- 如果单元格 A1 包含 =NOW() 那么 =IF(1<2,99,A1) 将始终 return 99,
但包含 IF 公式的单元格不会被视为
挥发性。
更新 无法使用 IF() 语句来缓解可变函数。请参阅下面的答案。 1
我刚刚听说我的 excel sheet 需要 运行 在土豆速度笔记本电脑上...
会;
=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() 函数的 "unused" 部分或 "volatile",我找不到明确的答案。
我在 sheet 上有大约 120 个偏移函数和 200 个 MATCH 函数。根据很多变量,50 到 90 之间的偏移量实际上一次用于结果。
希望收到你的来信,
科恩
PS;如果我切换功能和零,那不会有什么不同吗? PS;在我可以将内容放入(更快?)索引函数之前,这将是一个暂时的解决方案。
更新 无法使用 IF() 语句来缓解可变函数。
Last I read, trying to short circuit a Volatile Function with IF still results in the Volatile function being executed, even if it is in the FALSE part of the statement. So what you want to do is remove the volatile OFFSET function rather than try to short circuit it. The INDEX function can return a dynamic range, so that's what I'd use. See my answer at
以下是查尔斯·威廉姆斯对此事的看法:
在公式中使用易变函数会将包含公式的单元格标记为易变,即使从未执行易变函数也是如此:
- =IF(1<2,99,NOW()) 将始终 return 99 并且永远不会调用易失性 NOW() 函数,但包含 IF 公式的单元格 将被视为 volatile,(感谢 Stephen Bullen 的指点 这个出来)。
- 如果单元格 A1 包含 =NOW() 那么 =IF(1<2,99,A1) 将始终 return 99, 但包含 IF 公式的单元格不会被视为 挥发性。