excel - 具有额外维度的转置(行到列)?

时间:2017-04-05 08:52:42

标签: excel

是否可以将行转置为具有额外维度的列

想象表:

dimension |  data 1 |  data 2 | data 2
---------------------------------------
  test    |     a   |    b    |
  dummy   |     c   |    e    |   x
  user    |     a   |    d    |
john doe  |     v   |         |  

我需要得到这个:

dimension |  data 
-------------------
  test    |     a  
  test    |     b  
  dummy   |     c
  dummy   |     e
  dummy   |     x
  user    |     a
  user    |     d
john doe  |     v

有没有内置功能?或者我需要使用宏吗?

1 个答案:

答案 0 :(得分:0)

显然,使用VBA可以更直接,但可以使用工作表公式来完成,即:

假设您的源表位于A1:D5(第1行中包含标题),请在F2中输入数组公式**

=IF(ROWS($1:1)>COUNTIF(B$2:D$5,"<>"),"",INDEX(A$2:A$5,MATCH(ROWS($1:1),1+MMULT(0+(ROW(B$2:D$5)>TRANSPOSE(ROW(B$2:D$5))),MMULT(0+(B$2:D$5<>""),TRANSPOSE(COLUMN(B$2:D$5)^0))))))

向下复制,直到你得到结果的空白。

然后在G2

中输入此公式

=IF(F2="","",INDEX(INDEX(B$2:D$5,MATCH(F2,A$2:A$5,0),),COUNTIF(F$2:F2,F2)))

根据需要复制。

请注意,此设置假定给定不可能在数据列中的非空条目之间包含空白条目,例如 data1 data3 是非空白的,但 data2 是空白的。您提供的数据就是这种情况,因此这似乎是一个公平的假设。

此致

**数组公式的输入方式与&#39;标准&#39;相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。