ARRAYFORMULA重复VLOOKUP的结果

时间:2019-10-03 01:47:47

标签: google-sheets google-sheets-formula array-formulas google-sheets-query gs-vlookup

我被迫更改电子表格中的公式,并且在没有重复相同结果的情况下似乎无法让ARRAYFORMULA来填充列。

以下是可在一行中运行的代码:

=ArrayFormula(SPLIT(CONCATENATE(QUERY(coreAbilities!$A$2:$E,"SELECT B,C,D,E where A = '"&VLOOKUP(C2:C,unitData!$C$2:$D,2,)&"'",0)&":"),":"))

我曾尝试将其包装在VLOOKUP中,但似乎没有任何事情可以完成。

基本上,我正在搜索5列的表并找到与名称的匹配项,但是,这两个表之间的名称不同。我要搜索的名称必须首先与另一个表中的“代码名称”匹配,然后然后我可以搜索最终表。最重要的是,每个名称都有3-5个匹配项,每个都有5个值。因此,仅使用VLOOKUP似乎并不能解决问题。

我已经尝试过VLOOKUPFILTER,以期使自己更轻松,但是我可以设法(至少以正确的顺序)获得所需结果的唯一公式是:使用QUERY

我还没有嫁给我正在使用的方法,但是到目前为止,它已经使我迷住了,所以我一直试图将其强制通过。

这里是my sheet 英雄!H2

1 个答案:

答案 0 :(得分:1)

QUERY本身在字符串参数下支持数组/范围

0

唯一可能的方法是在QUERY中使用正则表达式功能,例如:

0

但是TEXTJOIN属于一组限制为50000个字符输入的公式,例如。这不适用于您的大型阵列。因此,双VLOOKUP是您的朋友。但是您注意到VLOOKUP始终只能输出第一个找到的结果,而每个下一个发现将只是第一个匹配项的克隆/重复。

0

所以诀窍是在vlookup的值后面附加一个计数器,该计数器将强制执行新的查找,而不是克隆先前的查找:

0


=ARRAYFORMULA(IFERROR(VLOOKUP(COUNTIFS(IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)), 
 IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)), ROW(M2:M), "<="&ROW(M2:M))&
 IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)),
 {COUNTIFS(coreAbilities!A2:A, coreAbilities!A2:A, ROW(coreAbilities!A2:A), "<="&
 ROW(coreAbilities!A2:A))&coreAbilities!A2:A, coreAbilities!B2:E}, {2,3,4,5}, 0)))

0


更新:

=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(SPLIT(IFERROR(VLOOKUP(
 IFERROR(VLOOKUP(C2:C, unitData!$C$2:$D, 2, 0)), 
 SPLIT(TRANSPOSE(QUERY(TRANSPOSE(QUERY(QUERY({coreAbilities!A2:A&"♦", 
 "♠"&coreAbilities!B2:B&"♠"&coreAbilities!C2:C&"♠"&coreAbilities!D2:D&"♠"&coreAbilities!E2:E,
 coreAbilities!C2:C}, "select Col1,max(Col2) group by Col1 pivot Col3", 0), 
 "offset 1", 0)),,999^99)), "♦"), 2, 0)), "♠"))), "offset 1", 0)))

0