如何编写VBA宏将B列所有数据移至A列最后数据行之后?
VBA宏实现B列数据移动至A列末尾
核心实现代码
Sub MoveBtoAEnd() Dim lastRowA As Long Dim lastRowB As Long ' 获取A列最后一个非空单元格的行号 lastRowA = Cells(Rows.Count, "A").End(xlUp).Row ' 获取B列最后一个非空单元格的行号 lastRowB = Cells(Rows.Count, "B").End(xlUp).Row ' 剪切B列所有数据(从B1到B最后一行) Range("B1:B" & lastRowB).Cut ' 粘贴到A列最后非空行的下一行 Range("A" & lastRowA + 1).Select ActiveSheet.Paste ' 清除剪切板选中状态(可选) Application.CutCopyMode = False End Sub
关键逻辑说明
Cells(Rows.Count, "A").End(xlUp).Row:从列的最后一行向上定位第一个非空单元格,精准获取A列数据的末尾行号,适配任意数据量。Range("B1:B" & lastRowB).Cut:通过动态拼接行号,确保选中B列全部有效数据进行剪切。Range("A" & lastRowA + 1):直接定位到A列数据的下一行作为粘贴起点,保证数据衔接有序。
补充提示
如果后续场景中B列可能存在中间空值,可将剪切范围改为Range("B1").CurrentRegion.Cut,自动选中B列连续的数据块,无需依赖末尾行号判断。
内容的提问来源于stack exchange,提问作者Clau Maj
相关产品推荐
相关产品推荐

