如何让googlesheet公式只计算一次?
How to make google sheet formula just calculate once?
我的 Google sheet 中有 3 行,即库存、价格和总计。所以,我只是对股票和价格使用 "multiple" 公式,然后将值放入总计行。但我不希望总行在我更改股票价值时得到更新或更改值。
有人可以帮助我吗?
Google Sheets 不适合以这种方式运行。最简单和最快的解决方案是计算你需要什么,然后使用 CTRL + C 并用 CTRL[=17 重新粘贴=] + SHIFT + V
假设您希望单元格A1 只计算一次它的值,您可以将以下内容放入单元格A1 中。这告诉单元格只使用它现有的值,如果有一个(并且它不是 0),否则 运行 公式。
=IF(A1<>0, A1, formula())
由于单元格引用自身,您需要在文件 > 电子表格设置 > 计算中启用迭代计算。
我对历史 Google 财务数据使用类似以下内容,因为该值永远不会改变,有时 Google 财务随机 returns 出错。这只会 运行 GOOGLEFINANCE() 公式,直到它 returns 一个没有错误的非零值。
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
最初我打算使用 Grayson 的解决方案,但是这个
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
在单元格上放置 FALSE,直到放置结果。
我需要它为空,即“”,因为与 (cell <>"")
不同的任何内容都会触发另一个单元格执行另一个 query/request.
我还需要公式为 运行,具体取决于触发器(另一个单元格中的 url)。在这个公式中,如果触发器放在公式有运行之后,就不会触发
所以我有类似的东西
=IF(AND(IFERROR(E53)<>0,E53<>""),E53, if(D53<>"",IMPORTDATA(D53),""))
解释(我花了一段时间才看懂,所以我可以扩展一下):
D53 = myself
If I am nothing ("") or I am in Error (importdata not yet completed)
then
I am the result of -> If(D53<>"",IMPORTDATA(D53),"")
Which is:
If the cell before me is something different from "", run the importdata
with that cell as url, otherwise I am "" (nothing)
如果触发器有效(之前单元格上的 url 存在),这将实现 运行 仅对公式进行一次计算的目标。结果一经放置,将不会改变。
如果出于某种原因您需要它再次 运行,您必须删除公式并重新放置它。
注意:如果 cellX 具有外部获取的结果(例如 IMPORTDATA)并且在 cellY=cellX 上,而在 cellX 上您看到“正在加载...”,在 cellY 上您将看到 0
(零)。我相信这解释了为什么其他解决方案与 0 进行比较。
我的 Google sheet 中有 3 行,即库存、价格和总计。所以,我只是对股票和价格使用 "multiple" 公式,然后将值放入总计行。但我不希望总行在我更改股票价值时得到更新或更改值。
有人可以帮助我吗?
Google Sheets 不适合以这种方式运行。最简单和最快的解决方案是计算你需要什么,然后使用 CTRL + C 并用 CTRL[=17 重新粘贴=] + SHIFT + V
假设您希望单元格A1 只计算一次它的值,您可以将以下内容放入单元格A1 中。这告诉单元格只使用它现有的值,如果有一个(并且它不是 0),否则 运行 公式。
=IF(A1<>0, A1, formula())
由于单元格引用自身,您需要在文件 > 电子表格设置 > 计算中启用迭代计算。
我对历史 Google 财务数据使用类似以下内容,因为该值永远不会改变,有时 Google 财务随机 returns 出错。这只会 运行 GOOGLEFINANCE() 公式,直到它 returns 一个没有错误的非零值。
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
最初我打算使用 Grayson 的解决方案,但是这个
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
在单元格上放置 FALSE,直到放置结果。
我需要它为空,即“”,因为与 (cell <>"")
不同的任何内容都会触发另一个单元格执行另一个 query/request.
我还需要公式为 运行,具体取决于触发器(另一个单元格中的 url)。在这个公式中,如果触发器放在公式有运行之后,就不会触发
所以我有类似的东西
=IF(AND(IFERROR(E53)<>0,E53<>""),E53, if(D53<>"",IMPORTDATA(D53),""))
解释(我花了一段时间才看懂,所以我可以扩展一下):
D53 = myself
If I am nothing ("") or I am in Error (importdata not yet completed)
then
I am the result of -> If(D53<>"",IMPORTDATA(D53),"")
Which is:
If the cell before me is something different from "", run the importdata
with that cell as url, otherwise I am "" (nothing)
如果触发器有效(之前单元格上的 url 存在),这将实现 运行 仅对公式进行一次计算的目标。结果一经放置,将不会改变。
如果出于某种原因您需要它再次 运行,您必须删除公式并重新放置它。
注意:如果 cellX 具有外部获取的结果(例如 IMPORTDATA)并且在 cellY=cellX 上,而在 cellX 上您看到“正在加载...”,在 cellY 上您将看到 0
(零)。我相信这解释了为什么其他解决方案与 0 进行比较。