使用 arrayformula 连接行范围

Join range of row using arrayformula

我在 A 列和 B 列中有一系列数据。在 D 列中,我有 shotID 的参考。我想为特定 shotID 涉及的艺术家制作一个列表。

在 E2 中我使用这个:

=JOIN( "," , FILTER($B:$B, $A:$A= D2))

然后向下复制到E3,E4。它按我的预期工作,但我想使用数组公式来完成。所以只在 E2 中使用单一公式,这并不那么简单:

=arrayformula( JOIN( "," , FILTER($B:$B, $A:$A= D2:D4)) )

我该怎么做?

拍:

=ARRAYFORMULA(REGEXREPLACE(TRIM(SPLIT(SUBSTITUTE(
 FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(SPLIT(
 FLATTEN(A2:A&"×"&B2:B&","&"×"&B2:B), "×"), 
 "select Col1,max(Col2) where Col2 is not null group by Col1 pivot Col3"), 
 "offset 1", 0)),,9^9)), " ", "×", 1), "×")), ",$", ))

您也可以试试:

={unique(A2:A),arrayformula(transpose(substitute(trim(query(if(A2:A<>transpose(unique(A2:A)),,B2:B),,9^9))," ",", ")))}

我从 player0 那里学到的另一种可能性,令他惊讶的是他没有建议...

=ARRAYFORMULA(SPLIT(TRANSPOSE(SUBSTITUTE(TRIM(QUERY(QUERY(A2:B&{"|",CHAR(10)},"select MAX(Col2) where Col1<>'|' group by Col2 pivot Col1"),,100)),CHAR(10),",")),"| ",0))