首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止计算单元格

防止计算单元格
EN

Stack Overflow用户
提问于 2014-08-22 13:17:17
回答 4查看 5.7K关注 0票数 2

是否可能防止Excel工作表中的单个单元格发生计算?假设我有1001个计算非常快的单元格,但是一个单元格减慢了工作表,是否可以只对该一个单元格禁用计算?

我不想做的是:

  1. 编程禁用所有单元格计算
  2. 当全局计算设置为手动时,编程计算特定单元格
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-22 16:12:34

使用Excel的=IF()函数。它被设置为“短路”--它只在第一个参数为真时计算第二个参数,而对于第三个参数则相反。

所以,如果单元格是C1,并且单元格的公式是当前

代码语言:javascript
复制
=LOOKUP(2,1/(A1:A100000=666),B1:B100000)

并且您希望只在D1为真时才计算它,请使用

代码语言:javascript
复制
=IF(D1,LOOKUP(2,1/(A1:A100000=666),B1:B100000),C1)

注意,这是一个循环引用--当D1为false时,它是如何保持相同值的。如果您想要删除警告消息,请打开迭代。

另一种方法是使用第三方外接程序之一,它允许您在表外存储全局变量,然后检索它,这将使用如下语法:

代码语言:javascript
复制
=IF(D1,SetGlobal("C1StoredCalculation",LOOKUP(2,1/(A1:A100000=666),B1:B100000)),GetGlobal("C1StoredCalculation"))

SetGlobal()GetGlobal()也可以用VBA编写,尽管它们比XLL慢一点点,如果您重置VBA项目,它们将失去这个值。

票数 4
EN

Stack Overflow用户

发布于 2014-08-22 13:54:14

Excel没有禁用单个单元格计算的方法。您可以将慢速公式移动到单独的工作表,并使用worksheet.enablecalculation禁用该工作表的计算。

或者,您可以将公式作为文本存储在某个位置,将结果作为值存储在单元格中,然后在要计算公式时恢复公式。

票数 2
EN

Stack Overflow用户

发布于 2014-08-22 14:13:54

您可以使用替代的UDF,并利用缺乏波动性的优势。

假设我们有这样的公式:

代码语言:javascript
复制
=LOOKUP(2,1/(A1:A100000=666),B1:B100000)

如果cols AB中的任何单元格发生变化,Excel将重新计算此值,但UDF将重新计算。

代码语言:javascript
复制
Public Function myudf(r As Range) As Variant
    myudf = Evaluate("LOOKUP(2,1/(A1:A100000=666),B1:B100000)")
End Function

只有当其参数发生变化时才会重新计算。因此,选择一个单元格并输入:

代码语言:javascript
复制
=myudf(Z100)

对cols AB中的细胞进行任何更改,在更改Z100之前,myudf将保持未重新计算的状态。

您可以使用同样的小技巧来制作=今天()=NOW() for =RAND()的“准易失性”版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25447993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档