我对 VBA 没有足够的经验来完成此操作。如何修改以下 VBA 才能执行以下操作:
将堆积的列放入新工作表中。
处理空白(下面的代码目前可以做到这一点)
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 表中。