ARLOFORMULA VLOOKUP的重复结果

问题描述 投票:0回答:2

我被迫更改电子表格中的公式,并且在没有重复相同结果的情况下似乎无法获得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列的表并找到与名称的匹配项,但是,这两个表之间的名称并不相同。我要搜索的名称必须首先与另一个表中的“代码名称”匹配,然后then我可以搜索最终表。最重要的是,每个名称都有3-5个匹配项,每个都有5个值。因此,仅使用VLOOKUP似乎无济于事。

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

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

这里是my sheet英雄!H2

google-sheets google-sheets-formula array-formulas google-sheets-query gs-vlookup
2个回答
0
投票
  • 单击单元格Copy of Heroes!H2并选择它。
  • 转到单元格的右下角,当它变成十字形时,将其拉下。

enter image description here

enter image description here


0
投票

QUERY确实不是在字符串参数下在其内部支持arrays / ranges

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

© www.soinside.com 2019 - 2024. All rights reserved.