【发布时间】: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