有什么方法可以将以下公式设为动态数组公式:
=query(
{IMPORTRANGE(B2,"Filter!B:C");
importrange(B3,"Filter!B:C");
importrange(B4,"Filter!B:C")},"Where Col2 <>''")
如果我的输入是三个电子表格键,那么 IMPORTRANGE 应该执行三次,如果我的输入是五个电子表格键,那么 IMPORTRANGE 应该执行五次。
有什么方法可以将以下公式设为动态数组公式:
=query(
{IMPORTRANGE(B2,"Filter!B:C");
importrange(B3,"Filter!B:C");
importrange(B4,"Filter!B:C")},"Where Col2 <>''")
如果我的输入是三个电子表格键,那么 IMPORTRANGE 应该执行三次,如果我的输入是五个电子表格键,那么 IMPORTRANGE 应该执行五次。
这个问题的答案是否定的,你不能。
importrange
在某种程度上已经是一个arrayformula
,因为它返回数组,所以它不能将键\范围数组作为输入。
您可以将公式组合为字符串,得到这样的字符串:
"=query({importrange(...);importrange(...)...},"select...")"
然后使用脚本将字符串转换为公式。
例如,制作工作ini
表,在 colA
制作 importranges 列表:
="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
。