如何将多列堆叠为一列?

如何将多列堆叠为一列?

示例数据

我对 VBA 没有足够的经验来完成此操作。如何修改以下 VBA 才能执行以下操作:

  1. 将堆积的列放入新工作表中。

  2. 处理空白(下面的代码目前可以做到这一点)

3.代码在用户当前选择的范围上执行。理想情况下,用户可以选择不连续的列。

Sub MoveAllDataToColumnA()
    Dim i As Long, ws As Worksheet, rngCopy As Range, rngEnd As Range
    Set ws = ActiveSheet
    Do Until ws.Cells(1, 2).Value = ""
        Set rngCopy = ws.Range("B2", ws.Cells(ws.Rows.Count, "B").End(xlUp))
        Set rngEnd = ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1, 0)
        rngEnd.Resize(rngCopy.Rows.Count, 1).Value = rngCopy.Value
        rngCopy.EntireColumn.Delete
    Loop
End Sub

答案1

我会为此使用 Power Query 插件,尽管它无法满足要求 #3。从 Excel 2016 开始,Power Query 内置于“获取和转换”部分下的数据功能区中。

我将在 Power Query 中创建的步骤如下:

选择 Org 和 Length 列,然后选择“删除列”。

选择类别列并选择“取消透视列/取消透视其他列”。

您可以将结果传送到新的 Excel 表中。

相关内容