Google 带有特殊转置的工作表查询

Google Sheets query with special transpose

我正在努力编写一个看起来比预期更复杂的查询,这里是要处理的数据示例

CW6 CW7 CW8 CW9
A B C A
B D E B

这里是最后的预期结果:

Item CW
A "CW6 CW9"
B "CW6 CW7 CW9"
C "CW8"
D "CW7"
E "CW8"

知道如何实现吗? 我在许多步骤中尝试过的:

=transpose(query(<data>,"Select *",1)) 转置我的数据

然后我用了

=transpose(
     query(
        transpose(<data transposed>),,9^9
     )
)

连接所有列

然后我select我想要检索列的所有唯一值header (CWxx)

=query(
     unique(flatten(<Data>)),
     "Select Col1 where Col1 is not null"
)

最后,我将转置的数据加入一个字符串(即 1 列)中:

=JOIN(" ", QUERY(< data transposed and joined>,"SELECT Col2 WHERE Col1 contains '"&A1&"'",0))

最后我得到了想要的数组,但我必须在每一行上复制最后一个连接公式,这是我不想做的,因为我的值是动态的

知道如何实现这个(或避免所有这些步骤的更简单方法)吗?

尝试:

=ARRAYFORMULA({QUERY(SORT(UNIQUE(FLATTEN(A2:D))), 
 "where Col1 is not null"), TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×")), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))})

或:

=ARRAYFORMULA({QUERY(SORT(UNIQUE(FLATTEN(A2:D))), 
 "where Col1 is not null"), """"&TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×")), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))&""""})


更新:

=ARRAYFORMULA({QUERY(TO_TEXT(SORT(UNIQUE(FLATTEN(A2:D)))), 
 "where Col1 is not null", 0), TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(TO_TEXT(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×"))), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))})