如何將多列堆疊為一列?

如何將多列堆疊為一列?

範例數據

我對 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 中建立的步驟是:

選擇組織和長度列,然後選擇「刪除列」。

選擇「類別」列,然後選擇「取消透視列/取消透視其他列」。

您可以將結果傳送到新的 Excel 表格中。

相關內容