【问题标题】:How to make google sheet formula just calculate once?如何让谷歌表格公式只计算一次?
【发布时间】:2019-06-09 13:29:34
【问题描述】:

我的 Google 表格中有 3 行,即库存、价格和总计。所以,我只是对股票和价格使用“倍数”公式,然后将值放入总行。但我不希望总行在更改库存值时得到更新或更改值。

有人可以帮我吗?

【问题讨论】:

    标签: google-sheets keyboard-shortcuts formula


    【解决方案1】:

    假设您希望单元格 A1 只计算一次其值,您可以将以下内容放入单元格 A1。这告诉单元格仅使用其现有值,如果有一个(而不是 0),否则运行公式。

    =IF(A1<>0, A1, formula())
    

    由于单元格引用自身,您需要在文件 > 电子表格设置 > 计算中启用迭代计算。

    我对历史 Google 财经数据使用类似以下的内容,因为该值永远不会改变,而且有时 Google 财经会随机返回错误。这只会运行 GOOGLEFINANCE() 公式,直到它返回一个非零值而不会出错。

    =IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
    

    【讨论】:

    • 简直太棒了!喜欢第二个,以避免在页面加载时重新请求 http 资源。
    【解决方案2】:

    Google 表格不是为以这种方式运行而构建的。最简单和最快的解决方案是计算您需要的内容,然后使用 CTRL + C 并使用 CTRL + SHIFT 重新粘贴kbd> + V

    【讨论】:

    • 嗯,所以禁用总行的自动更新是不可能的?
    • @Gantama 确实
    【解决方案3】:

    一开始我选择了 Grayson 的解决方案,但是这个

    =IF(IFERROR(A1)<>0, A1, GOOGLEFINANCE(...))
    

    在单元格上放置 FALSE,直到放置结果。

    我需要它为空,即“”,因为与 (cell &lt;&gt;"") 不同的任何内容都会触发另一个单元格执行另一个查询/请求。

    我还需要根据触发器(另一个单元格中的 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 进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 2021-05-30
      • 2021-05-03
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多