ARRAYFORMULA 重复 VLOOKUP 的结果

ARRAYFORMULA repeating results of VLOOKUP

我被迫更改我的电子表格中的一个公式,但似乎无法让 ARRAYFORMULA 在不重复相同结果的情况下填写该列。

这是在一行中工作的代码:

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

我试过用 VLOOKUP 包装它,但似乎什么也做不了。

基本上,我正在搜索 5 列的 table 并找到与名称匹配的名称,但是,这两个 table 之间的名称不同。我正在搜索的名称必须首先与另一个 table 和 中的 "code name" 匹配,然后 我可以搜索最后一个 table。最重要的是,每个名称都有 3-5 个匹配项,每个匹配项有 5 个值。所以简单地使用 VLOOKUP 似乎并不能解决问题。

我已经尝试了 VLOOKUPFILTER,希望自己能更轻松地完成这项工作,但这是我能够设法获得所需结果的唯一公式(至少以正确的顺序)是通过使用 QUERY.

我并没有接受我正在使用的方法,但它已经让我走到这一步了,所以我一直在努力坚持下去。

这是my sheet 英雄!H2

QUERY 支持 arrays/ranges 内部的字符串参数。

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

然而TEXTJOIN属于一组限制为50000个字符输入的公式,例如。这不适用于您的大型阵列。因此 double VLOOKUP 是你的朋友。但正如您所注意到的,VLOOKUP 始终只能输出第一个找到的结果,而接下来的每个发现都只是第一个匹配项的 clones/repeats。

所以诀窍是在 vlooked up 值上附加一个计数器,这将强制新发现而不是克隆以前的发现:


=ARRAYFORMULA(IFERROR(VLOOKUP(COUNTIFS(IFERROR(VLOOKUP(C2:C, unitData!$C:$D, 2, 0)), 
 IFERROR(VLOOKUP(C2:C, unitData!$C:$D, 2, 0)), ROW(M2:M), "<="&ROW(M2:M))&
 IFERROR(VLOOKUP(C2:C, unitData!$C:$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)))


更新:

=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(SPLIT(IFERROR(VLOOKUP(
 IFERROR(VLOOKUP(C2:C, unitData!$C:$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)))