如何将多列转换为单列?

时间:2009-11-22 22:25:48

标签: excel vba excel-vba

我有一个看起来像这样的表:

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上生锈了。

1 个答案:

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