如何用VBA将一行内容追加到上一行末尾?
VBA实现选中区域内下一行内容追加到上一行末尾
以下是满足需求的VBA宏代码,仅作用于你选中的单元格区域,自动将相邻下一行的所有内容追加到上一行的最后非空单元格后方,完成后删除原下一行:
Sub AppendNextRowToPrevious() Dim selectedRange As Range Dim currentRow As Long Dim lastCol As Long Dim nextRowLastCol As Long ' 获取用户选中的区域 Set selectedRange = Selection ' 从选中区域的最后一行向上遍历,避免删除行后索引混乱 For currentRow = selectedRange.Rows.Count To 2 Step -1 ' 定位上一行的最后一个非空单元格列号 lastCol = selectedRange.Cells(currentRow - 1, selectedRange.Columns.Count).End(xlToLeft).Column ' 定位当前行(待追加的下一行)的最后一个非空单元格列号 nextRowLastCol = selectedRange.Cells(currentRow, selectedRange.Columns.Count).End(xlToLeft).Column ' 将下一行的所有非空内容复制到上一行末尾 selectedRange.Cells(currentRow, 1).Resize(1, nextRowLastCol).Copy _ Destination:=selectedRange.Cells(currentRow - 1, lastCol + 1) ' 删除已完成追加的原下一行 selectedRange.Rows(currentRow).Delete Next currentRow End Sub
代码说明
- 从下往上循环:如果从上到下处理,删除行后后续行的索引会错乱,从最后一行向上遍历可避免这个问题
- 自适应行长度:用
End(xlToLeft)自动识别每行的最后非空单元格,适配不同长度的行 - 仅作用选中区域:通过
Selection限定操作范围,不会修改未选中的行内容
使用步骤
- 打开Excel,按下
Alt+F11打开VBA编辑器 - 右键点击当前工作簿 → 插入 → 模块
- 将上述代码粘贴到模块窗口中
- 返回Excel,选中需要处理的目标行(比如示例中的两行数据)
- 按下
Alt+F8,选择AppendNextRowToPrevious并执行
内容的提问来源于stack exchange,提问作者PotterFan
相关产品推荐
相关产品推荐

