使用 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))
我在 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))