根据 A 列中的值旋转 B 列、C 列等值

Rotate column B, C, etc values based on values in column A

我知道 Python pandas 您可以 melt 旋转单元格值。

这里我想根据A列旋转B列和C列的值:

期望的结果:

当我更改 Google sheet 中的其他值时,我需要它即时更新,否则,我会将其导出到 pandas 数据框并从那里融化.

如何在 Google 工作表中 "melt" 使此轮播动态更新?如果没有内置函数,我将如何在 Google Sheets javascript 中执行此操作?


注意:Transpose (=TRANSPOSE(A2:C2)) 看起来很有希望,但它不会旋转 table,它只会将 B 和 C 中的单元格值移动到 A 下方:

Example on Sheets.

screenshot of example

第 1 行在 A、B、C 等列中包含 "hello world" "stringA" "stringB" 等

我从第 3 行开始输出。(输出到 A、B 列,从第 3 行开始。)

您可以在第二列中使用转置,例如像这样将你的转置放在 B3 中:

=TRANSPOSE(B1:1)

然后可以在 A3 中实现 A 列的静态值:

=ARRAYFORMULA(if(NOT(ISBLANK(B3:B)),$A,""))

表示要关注 B 列,从第 3 行开始,如果 B 列中有内容,则添加 A1 中的静态值。

这会在您在第 1 行中添加值时动态增加垂直列表,并且静态值遵循 A1 的值。

您可以使用典型的连接拆分组合

=ARRAYFORMULA(SPLIT(A2&""&TRANSPOSE(B2:C2),""))
=ARRAYFORMULA(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(B1:C<>"", "♠"&A1:A&"♦"&B1:C, )), , 999^99)), , 999^99), "♠")), "♦")))

={{A1:A2,B1:B2};{A1:A2,C1:C2};{A1:A2,D1:D2}}

在此数组中添加尽可能多的列。我假设数据有 4 列,A 列是前导列。

snapshot of the data and the solution