【发布时间】:2019-06-09 13:29:34
【问题描述】:
我的 Google 表格中有 3 行,即库存、价格和总计。所以,我只是对股票和价格使用“倍数”公式,然后将值放入总行。但我不希望总行在更改库存值时得到更新或更改值。
有人可以帮我吗?
【问题讨论】:
标签: google-sheets keyboard-shortcuts formula
我的 Google 表格中有 3 行,即库存、价格和总计。所以,我只是对股票和价格使用“倍数”公式,然后将值放入总行。但我不希望总行在更改库存值时得到更新或更改值。
有人可以帮我吗?
【问题讨论】:
标签: google-sheets keyboard-shortcuts formula
假设您希望单元格 A1 只计算一次其值,您可以将以下内容放入单元格 A1。这告诉单元格仅使用其现有值,如果有一个(而不是 0),否则运行公式。
=IF(A1<>0, A1, formula())
由于单元格引用自身,您需要在文件 > 电子表格设置 > 计算中启用迭代计算。
我对历史 Google 财经数据使用类似以下的内容,因为该值永远不会改变,而且有时 Google 财经会随机返回错误。这只会运行 GOOGLEFINANCE() 公式,直到它返回一个非零值而不会出错。
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
【讨论】:
Google 表格不是为以这种方式运行而构建的。最简单和最快的解决方案是计算您需要的内容,然后使用 CTRL + C 并使用 CTRL + SHIFT 重新粘贴kbd> + V
【讨论】:
一开始我选择了 Grayson 的解决方案,但是这个
=IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
在单元格上放置 FALSE,直到放置结果。
我需要它为空,即“”,因为与 (cell <>"") 不同的任何内容都会触发另一个单元格执行另一个查询/请求。
我还需要根据触发器(另一个单元格中的 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 进行比较。
【讨论】: