我有一个看起来像这样的表:
Col1 Col2 Col3 Col4
a b c d
e f g h
我需要将其转换为:
Col1 New
a b
a c
a d
e f
e g
e h
我有大量数据,手动完成此操作是不可能的。有谁知道快速的方法吗?我希望有内置的方式(例如paste->转置或函数?)。如果没有,有人可能会指出我在相关的VBA示例,因为我在VBA上生锈了。
答案 0 :(得分:4)
选择要转换的数据(不包括列标题)并运行以下宏。
Sub Transform()
Dim targetRowNumber As Long
targetRowNumber = Selection.Rows(Selection.Rows.Count).Row + 2
Dim col1 As Variant
Dim cell As Range
Dim sourceRow As Range: For Each sourceRow In Selection.Rows
col1 = sourceRow.Cells(1).Value
For Each cell In sourceRow.Cells
If Not cell.Column = Selection.Column Then
Selection.Worksheet.Cells(targetRowNumber, 1) = col1
Selection.Worksheet.Cells(targetRowNumber, 2) = cell.Value
targetRowNumber = targetRowNumber + 1
End If
Next cell
Next sourceRow
End Sub