Excel数据格式

时间:2016-10-06 21:39:23

标签: excel vba

我正在努力格式化下表。目标是从表1转到表2.下图显示了大型数据集中的样本。你如何转换表1并转换为表2?谢谢。enter image description here

2 个答案:

答案 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

示例输入,包含行和列:

enter image description here

示例输出:

enter image description here

答案 1 :(得分:0)

您没有转置数据(沿X = -y对角线翻转数据);您将二维范围转换为单维范围。

此外,已经回答here