将多列数据混合成一列

时间:2019-02-24 21:58:23

标签: google-sheets

我想将三列的内容合并为一列,如本例所示:

Col1  Col2  Col3
A     1     x
B     2     Y

所以结果是一列有8行,如下所示:

Result
A 1 X
A 1 Y
A 2 X
A 2 Y
B 1 X
B 1 Y
B 2 X
B 2 Y

我需要Google表格命令来执行此操作,而不是电子表格解决方案,因为使用表格时结果值必须自动更改。

我已经尝试过COMBINEJOIN,但没有太大的成功。 或者,如果您向我展示如何仅合并三列中的两列,则可以在第二步中合并第三列。

3 个答案:

答案 0 :(得分:3)

2列:

=ARRAYFORMULA(TRANSPOSE(SPLIT(REPT(CONCATENATE(A1:A&CHAR(9)), COUNTA(B1:B)), CHAR(9)))
 &" "&TRANSPOSE(SPLIT(CONCATENATE(REPT(B1:B&CHAR(9), COUNTA(A1:A))), CHAR(9))))

0


3列:

=ARRAYFORMULA(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A1:A&CHAR(9)), COUNTA(B1:B)), CHAR(9)))&" "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(B1:B&CHAR(9), COUNTA(A1:A))), CHAR(9)))&CHAR(9)),
 COUNTA(C1:C)),CHAR(9)))&" "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(C1:C&CHAR(9), COUNTA(
 TRANSPOSE(SPLIT(REPT(CONCATENATE(A1:A&CHAR(9)), COUNTA(B1:B)), CHAR(9)))&" "&
 TRANSPOSE(SPLIT(CONCATENATE(REPT(B1:B&CHAR(9), COUNTA(A1:A))), CHAR(9)))))), CHAR(9))))


3列,分两个步骤:

=ARRAYFORMULA(TRANSPOSE(SPLIT(REPT(CONCATENATE(D1:D&CHAR(9)), COUNTA(C1:C)), CHAR(9)))
 &" "&TRANSPOSE(SPLIT(CONCATENATE(REPT(C1:C&CHAR(9), COUNTA(D1:D))), CHAR(9))))

0

答案 1 :(得分:1)

假设A在A1的第1行中,并向下复制以适合:

=offset(A$1,int((row()-1)/4),)&" "&offset(B$1,abs(iseven(int((row()-1)/2))-1),)&" "&offset(C$1,mod((row()-1),2),)

答案 2 :(得分:0)

旋转,连接,旋转,然后连接等等。没有其他方法可以达到此目的。如果有这样的任务,我将尝试将N个矩阵相乘N-1次。

enter image description here

=ARRAYFORMULA(TRANSPOSE(SPLIT(
  TEXTJOIN("·",TRUE,SPLIT(
    TEXTJOIN("·",TRUE,(A2:A3&" "&TRANSPOSE(B2:B3))),
    "·")&" "&C2:C3),
  "·"
)))