[英]Why does my importrange query fail when I “wrap” with arrayformula
我有以下公式,目前正在返回预期结果-
=join(",",query(importrange(vlookup(mid(G4,1,find(",",G4)-1),xref,2,false),vlookup(mid(G4,1,find(",",G4)-1),xref,3,false)),"Select Col3,Col6,Col9 where Col1 = '"&mid(G4,find(",",G4)+1,20)&"' "))
但是,我自然希望使它尽可能动态和灵活,因此我想将其“包装”成一个数组公式,最终像这样-
=arrayformula(join(",",query(importrange(vlookup(mid(G4:G,1,find(",",G4:G)-1),xref,2,false),vlookup(mid(G4:G,1,find(",",G4:G)-1),xref,3,false)),"Select Col3,Col6,Col9 where Col1 = '"&mid(G4:G,find(",",G4:G)+1,20)&"' ")))
此公式给我“无法解析函数QUERY参数2的查询字符串:NO_COLUMNCol3”错误。
我试图包括一个iferror来尝试捕获一些错误,但这没有什么区别。
我尝试了各种角度进行调试,并且基本上专注于importrange,一旦将数据由arrayformula封装,它就不会向查询提供数据。 我试图在importange函数中显式引用外部工作表键和范围,而不是使用查找,但这确实给了我一个结果-但仅在第一个单元格中。 还应该有大约4行以下返回的结果。
如果将公式复制到该列下,则确实将预期结果降低了4行,但这显然无法达到arrayformula的目的。
在我对Google论坛的研究中,有一些建议认为arrayformula和importrange可能不能很好地结合在一起使用,但是并没有一成不变的事实。
我在这个论坛上注意到,已经提到了这两个功能的组合,但没有迹象表明它们不能一起使用,所以我想知道语法中是否缺少一些小东西,导致我的理想情况不工作?
我不认为这有几个原因。
首先,并非Google表格中的所有功能都可以使用arrayformula自动实现,而QUERY就是其中之一。 据我所知,这是因为QUERY的输出本身可以是一个数组,因此不可能在另一个数组(即您的结果范围)之间迭代数组的输出。
其次,JOIN跨单个行或单个列工作,而查询输出3个列。 因此,arrayformula结果将由具有多个行和列的数组组成,JOIN无法使用该数组。
我认为最好的解决方案是使用您所描述的IFERROR,然后将单行公式复制到整个列中-这样,空白记录就不会显示为错误,但是您可以向列中添加新值G,它们将被自动拾取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.