如何在Excel中将长表格转换为宽表格?

一张图片胜过千言万语。 比方说,在一张表中我有下面的表格:

在这里输入图像说明

使用这些信息,我想在另一个表格中以编程方式生成这样的表格(将长表格解开为宽表格)

在这里输入图像说明

你怎么能做到这一点?

使用VBA:

Range("G1:K99").Clear For Each xx In Range("A:A") If xx.Value = "" Then Exit Sub Range("G1").Offset(xx.Value, 0) = xx.Value For e = 1 To 99 If Range("G1").Offset(xx.Value, e) = "" Then Range("G1").Offset(xx.Value, e) = xx.Offset(0, 1).Value Exit For End If Next Next 

该表是从列“G”创build的。 如果你想要另一张表:

 Sheets(2).Range("G1: ... 

在…之前添加表格

没有VBA,遵循这个计划:

在这里输入图像说明

添加公式:

 M2 -> =IFERROR(MATCH(L2;$A$1:$A$8;);"") N2 -> =IFERROR(MATCH(L2;INDIRECT("$A" & (M2+1) & ":$A$8");)+M2;"") O2 -> =IFERROR(MATCH(L2;INDIRECT("$A" & (N2+1) & ":$A$8");)+N2;"") P2 -> =IFERROR(INDEX($B$1:$B$8;M2);"") Autocomplete also columns to R 

和自动完成…

我还可以看到另一种方法。 添加两列“计数”和“密钥”。

例

添加公式并展开:

 C2 -> =COUNTIF($B$2:B2;B2) D2 -> =B2&"|"&C2 G2 -> =IFERROR(INDEX($A:$A;MATCH($F2&"|"&COLUMN(A1);$D:$D;0));"")