如何将importrange作为动态函数

时间:2017-04-13 16:16:34

标签: google-sheets formula

有没有办法将下面的公式作为动态数组公式。

=query( {IMPORTRANGE(B2,"Filter!B:C"); importrange(B3,"Filter!B:C"); importrange(B4,"Filter!B:C")},"Where Col2 <>''")

如果我的输入是3个电子表格键,那么importrange应该执行3次,如果我的输入是5个电子表格键,那么importrange应该执行5次。

任何帮助都会非常重要。

1 个答案:

答案 0 :(得分:0)

这个Q的答案是否定的,你不能。

importrange在某种程度上已经是arrayformula,因为它会返回数组,所以它不能将一个键\范围数组作为输入。

解决方法

您可以将公式组合为字符串,获取如下字符串:

"=query({importrange(...);importrange(...)...},"select...")"

然后使用脚本将字符串转换为公式。

例如,在ini列中创建A表格,列出导入范围:

="importrange("&B1&",""Filter!B:C"")"
="importrange("&B2&",""Filter!B:C"")"
="importrange("&B3&",""Filter!B:C"")"
and so on

将密钥放入col B

然后制作过滤器公式,用分号连接它们:

= join(";", filter (A:A, A:A <> "")

所以你得到了未来公式的一部分:

"importrange(B2,"Filter!B:C");importrange(B3,"Filter!B:C");..."

然后连接公式的其他部分。

最后一步是使用脚本转换此文本公式并将其作为实际公式粘贴到目标工作表。如果您使用onEdit触发器检查ini表格中的任何更改,则脚本可能会起作用。