繁体   English   中英

当我用arrayformula“包装”时,为什么importrange查询失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM