如何在Excel中将长表格转换为宽表格? – 答案不工作

我在这里有这样的问题:

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

但唯一的答案( https://stackoverflow.com/a/24424637/3581372)无法正常工作。 VBA和公式部分(我需要至less一个工作解决scheme)。


使用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的表

没有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);"")

自动填充也是R的列

和自动完成…


我正在使用Excel 2010.任何人都可以检查解决scheme吗?

你可以使用这个(testing):

 Sub test() Dim Dic As Object: Set Dic = CreateObject("Scripting.Dictionary") Dim cl As Range, i&, k, x%, z% Dic.comparemode = vbTextCompare i = [B:B].Find("*", , xlValues, , xlByRows, xlPrevious).Row For Each cl In Range([B2], Cells(i, "B")) If Not Dic.exists(cl.Value2) Then Dic.Add cl.Value2, "1|" & cl.Offset(, -1).Value2 Else x = Split(Dic(cl.Value2), "|")(0) z = x + 1 Dic(cl.Value2) = Replace(Dic(cl.Value2), x, z) & _ "|" & cl.Offset(, -1).Value2 End If Next cl Workbooks.Add [A1] = "Room": [B1] = "Count": i = 2 For Each k In Dic Cells(i, "A") = k Range(Cells(i, 2), Cells(i, Split(Dic(k), "|")(0) + 2)) = Split(Dic(k), "|") i = i + 1 Next k End Sub 

资源:

在这里输入图像说明

输出:

在这里输入图像说明