将列转置为行,以编程方式保留第一列,就像在Excel 2013中一样

时间:2019-10-19 13:06:43

标签: excel vba excel-formula

我的数据格式如下。

enter image description here

这是我想要实现的结果。

enter image description here

由于我在excel中找不到任何直接方式来按我的要求转置数据,因此我正在寻找以编程方式进行处理的方法,但是由于我从未在VBA中编写宏,您能否告诉我如何进行?

1 个答案:

答案 0 :(得分:0)

假设A1:E4中包含的“输入表”包含标头

“输出表”标准G1:I1:“资源”,“技能”和“价值”

在“输出表”的“资源”列G2中,向下复制:

=IFERROR(INDEX(A$2:A$4,AGGREGATE(15,6,ROW(A$2:A$4)-ROW(A$1)/(B$2:E$4>0),ROWS($1:1))),"")

在“输出表”的“技能”列H2中,向下复制:

=IF(G2="","",INDEX(B$1:E$1,AGGREGATE(15,6,COLUMN(B$1:E$1)-COLUMN($A1)/(INDEX(B$2:E$4,MATCH(G2,A$2:A$4,0),0)>0),COUNTIF(G$2:G2,G2))))

在“输出表”的“值”列I2中,向下复制:

=IF(G2="","",INDEX(B$2:E$4,MATCH(G2,A$2:A$4,0),MATCH(H2,B$1:E$1,0)))