是否可以将行转置为具有额外维度的列
想象表:
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
有没有内置功能?或者我需要使用宏吗?
答案 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在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。