【问题标题】:From text to formula从文本到公式
【发布时间】:2019-02-17 09:29:48
【问题描述】:

我不想从动态更新的单元格中创建一个公式作为文本字符串,其中包含对不同工作表中范围的引用内容。然后需要将此文本字符串转换为另一个工作表中的公式。我想我可以在 excel 中使用 Evaluate 函数。但在谷歌电子表格中这不应该工作。 文本字符串如下所示:FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0) 并且可以添加更多过滤器引用。

{FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(DBDold!B2:F;LÆNGDE(DBDold!B2:B)>0);....}

至于现在,我已经设法使用脚本正确地编写代码,并且似乎生成了正确的公式。但它不会进行计算,直到我手动在末尾输入一个空格或以其他方式更改公式。

function addFormula(){
var formula = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stamdata").getRange('E5').getValue();
var samlet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Samlet").getRange('B2');
var range = SpreadsheetApp.getActiveRange();
samlet.setFormula(formula);
}

Stamdata!E5 是:FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0)(LÆNGDE=LEN 英文) 在 Samlet!B2 中创建了公式 =FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0) 正如它应该的那样 - 但结果是#I/T(Fejl FILTER har forskellige intervalstørrelser. Forventede 249 rækker og 1 kolonner, men indeholder 1 rækker og 1 kolonner. = 在英语中,像 FILTER 这样的东西有不同的大小。预计 249 行 og 1 列,但有 1 行和 1 列。) 如果我在 Samlet!B2 中在新生成的公式末尾放入一个空格,则一切计算正确。

然后我尝试在 Stamdata!E5 中创建一个简单的公式,例如 3*3。然后在没有任何手动“干预”的情况下创建和计算公式。

【问题讨论】:

  • 你能分享一个例子吗?我不能重复这个。
  • 这里是文档的副本——你可以在菜单“刷新”中运行该功能:docs.google.com/spreadsheets/d/…
  • 我确实设法使它与查询一起工作。但是根据数据,我得到了一些奇怪的结果,并且第一行中的链接没有激活。我已将查询公式复制到 Stamdata!E5

标签: google-apps-script google-sheets


【解决方案1】:

简单的解决方案:公式需要是一个包含“等于”(=) 前缀的字符串。

单元格 E5 目前包含一个公式 (=E4),它产生:

{FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(Platformen!B2:F;LÆNGDE(Platformen!B2:B)>0)

这里需要注意两点:
1) 内容被视为文本
2) 字符串开头没有“等号”(=)。

内容应该如下所示:

={FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(Platformen!B2:F;LÆNGDE(Platformen!B2:B)>0)

如何解决

编辑单元格 E5(或单元格 E4,以适合您的为准)在左大括号的左侧插入等号 (=)。结果仍将被视为字符串,因此不存在危险;)

一个附带条件:我必须将“LÆNGDE”转换为“LEN”才能使我的测试正常工作。但我认为这可能只是“显示语言”的问题,对我来说是英语(澳大利亚),对你来说可能是丹麦语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多