【问题标题】:How to evaluate a concatenated formula in Google Sheets?如何评估 Google 表格中的连接公式?
【发布时间】:2016-02-25 12:35:30
【问题描述】:

是否有任何方法(使用脚本或其他方式)来评估 Google 电子表格中的串联公式?

我为 Google Finance 函数创建了一个连接公式来获取每日汇率。这是因为我的日期和货币不断变化;我有时对获取“usdinr”或“euraud”感兴趣,而不是“usdeur”。使用连接和一些基础脚本,我能够将以下公式作为文本粘贴到单元格中。所需要的只是一种执行以下字符串的方法。

"=GoogleFinance("usdeur","price",date(2013,12,1),date(2013,12,16))"

据我了解,Sheets 没有 Excel 那样的“EVAL”功能。在工作表中,按两次“Enter”就可以了。有什么办法可以为此编写脚本吗?

【问题讨论】:

  • 您的连接函数是什么样的?- 您可以在完全不需要脚本的情况下实现所有这些 - 您可以将函数的各个部分动态连接在一起
  • @Aurielle:感谢您的回复。我能够动态地加入这些片段。我需要帮助编写其执行脚本。这就是我的连接的样子: =CONCATENATE("=GoogleFinance(""",A10,""",""","price"",date(",E3,"),date(",E6," )") 通过一些基本的脚本,我能够将公式作为文本字符串粘贴到其中一个单元格中。唯一缺少的部分是执行。按“Enter”两次应该可以做到这一点,尽管我愿意尝试其他替代方案。
  • @RobinGertenbach:setFormula + onEdit 肯定会起作用。我试图弄清楚每次更改货币时如何将更新的字符串输入编辑器。 setFormula 不是静态的吗?

标签: google-apps-script google-sheets google-sheets-formula evaluate


【解决方案1】:

你可以在没有连接的情况下做到这一点:

=GoogleFinance(A10,"price",E3,E6)

【讨论】:

    【解决方案2】:

    感谢您的解决方法,它确实有效。根据您的说明,它看起来可以进一步简化。

    1. 在单元格 B1 中输入以下内容:="=sum(A1:A5)"
    2. 在单元格 C1 中设置数据验证并选择带有下拉选项的 B1。

    现在选择 C1 并从下拉列表中选择公式,它将自动对 A1 到 A5 之间的任何值求和。

    我有一张表格,我在其中为多个值创建了一个复杂的公式,并且这个过程奏效了!

    再次感谢您,因为我的工作表上有另一个程序正在提取的数据,因为我试图避免使用脚本。在这些情况下,脚本函数并不总是自动运行。

    【讨论】:

      【解决方案3】:

      对于没有评估()的谷歌来说,这是一个很棒的解决方法。我环顾四周,除了脚本之外,没有其他方法可以将公式作为字符串放在一张纸上,然后在另一张纸上使用该公式。事实上,我所看到的一切都表明你不能。如果有人读到这篇文章,如果他们提出适当的问题,可以重新发布,那会很有帮助,因为我一定已经阅读了六篇帖子,说在我卷起袖子并完成之前这是不可能的。 :) 它仍然有点笨拙,因为您需要电子表格中的两个单元格来执行公式,但这里是这样。

      好的,一些设置。我们将使用公式作为字符串SpreadsheetA 调用电子表格,调用公式在TabAA 上的选项卡,即您要调用的电子表格并执行所述公式SpreadsheetB。我将使用一个多选项卡示例,假设您希望在 SpreadsheetB 选项卡上计算 A1:A5 的总和:TabBA 在 SpreadsheetB 选项卡上计算:TabBB 单元格 A1。也叫电子表格A的URL:URLA。

      因此,在电子表格 A 选项卡:TabAA 单元格 A1 中输入 ="=sum(TabBB!A1:A5)",因此单元格将显示:=sum(A1:A5)。注意:您不需要任何 $ 公式。然后在电子表格 B 中,选项卡:TabBB,单元格 A2 输入:=Query(Importrange("URLA","TabAA!A1"),"select Col1 where Col1 ''")。该单元格现在将显示 =sum(TabBA!A1:A5)。在此旁边,电子表格 B 选项卡的单元格 A1:TabBB,使用 B2 中的公式创建单元格的下拉列表(右键单击单元格 A1,选择数据验证,对于标准选择:从范围列出,在右侧的框中输入 B2)。该单元格现在应该对 SpreadsheetB、TabBA、范围 A1:A5 求和。

      希望这很清楚,我对此很陌生。同样重要的是,显然您只会在您想从电子表格 A 上的多个公式中进行选择的情况下执行此操作,而不是 TabAA!A1 说您在 A2 中还有另一个公式,因此您的查询将是 =Query(Importrange("URLA"," TabAA!A1:A2")。我理解在简单的情况下,您只需将公式放在需要总和的位置。

      编辑:我注意到,当我想使用带有双引号的公式时,上述情况不起作用,因为当您将带有双引号的公式用双引号括起来时,您会收到错误,因为您需要在 double 中使用单引号引号。我正在尝试的示例: if(counta(iferror(query(B15:C,"select C where C = 'Rapid Shot' and B = true")))>0,Core!$C$18+$C$10&" / ",)&Core!$C$18+$C$10&if(Core!$C$18>5," / "&Core!$C$18-5+$C$10,)&if(Core!$C$18>10," / "&Core!$C$18-10+$C$10,)&if(Core!$C$18>15," / "&Core!$C$18-15+$C$10,) 在这种情况下,我将另一个公式放入电子表格 A TabAA 单元格 A2 中,其内容为 ="="&A1。然后,将电子表格 B 中的导入范围引用调整为引用该单元格。

      顺便说一句,这绝对有效,所以如果你不能得到它,让我知道你在哪里遇到问题,我不会做很多合作,所以也许我没有说清楚或使用正确/最佳术语但是我再次看到很多帖子说这是不可能的,没有人说他们找到了另一种方法。 谢谢~K to the D zizzle。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多