有没有办法将下面的公式作为动态数组公式。
=query(
{IMPORTRANGE(B2,"Filter!B:C");
importrange(B3,"Filter!B:C");
importrange(B4,"Filter!B:C")},"Where Col2 <>''")
如果我的输入是3个电子表格键,那么importrange应该执行3次,如果我的输入是5个电子表格键,那么importrange应该执行5次。
任何帮助都会非常重要。
答案 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
表格中的任何更改,则脚本可能会起作用。