有没有办法将以下公式作为动态数组公式:
=query(
{IMPORTRANGE(B2,"Filter!B:C");
importrange(B3,"Filter!B:C");
importrange(B4,"Filter!B:C")},"Where Col2 <>''")
如果我的输入是三个电子表格键,那么 IMPORTRANGE 应该执行三次,如果我的输入是五个电子表格键,那么 IMPORTRANGE 应该执行五次。
这个Q的答案是否定的,你不能。
importrange
在某种程度上已经是一个arrayformula
,因为它返回数组,所以它不能将键\范围数组作为输入。
解决方法
您可以将公式组合为字符串,获取如下字符串:
"=query({importrange(...);importrange(...)...},"select...")"
然后使用脚本将字符串转换为公式。
<小时 />例如,在 col 中制作ini
工作表A
创建导入范围列表:
="importrange("&B1&",""Filter!B:C"")"
="importrange("&B2&",""Filter!B:C"")"
="importrange("&B3&",""Filter!B:C"")"
and so on
将钥匙放入 B
列中。
然后制作过滤器公式以用分号连接它们:
= join(";", filter (A:A, A:A <> "")
所以你得到了未来公式的一部分:
"importrange(B2,"Filter!B:C");importrange(B3,"Filter!B:C");..."
然后连接公式的另一部分。
最后一步是使用脚本转换此文本公式并将其作为实际公式粘贴到目标工作表中。如果您使用触发器检查工作表中的任何更改onEdit
脚本可能会动态ini
工作。