答案 0 :(得分:1)
我认为你想要的是一个不透明的东西。它实际上是Excel 2013中的原生,但对于以前的版本,您必须破解自己的版本。这是一个基于您的一些示例数据的基本示例。如果您进行微调以适应实际的范围位置,这应该可以让您获得90%的目标。
Sub Unpivot()
Dim headerRow, row, newRow, col As Integer
Dim ws1, ws2 As Worksheet
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
headerRow = 2
row = 4
newRow = 4
While ws1.Cells(row, 1).Value <> ""
col = 5
While (ws1.Cells(headerRow, col) <> "")
ws2.Range("A" & newRow & ":D" & newRow).Value = _
ws1.Range("A" & row & ":D" & row).Value
ws2.Cells(newRow, 5).Value = ws1.Cells(headerRow, col).Value
ws2.Cells(newRow, 6).Value = ws1.Cells(row, col).Value
newRow = newRow + 1
col = col + 1
Wend
row = row + 1
Wend
End Sub
示例输入,包含行和列:
示例输出:
答案 1 :(得分:0)
您没有转置数据(沿X = -y对角线翻转数据);您将二维范围转换为单维范围。
此外,已经回答here: