You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求完善Excel VBA宏:空单元格时复制上方值并删除上方行

VBA宏实现A列空单元格补值并删除上方行

需求明确:当A列某单元格为空时,先把它上方单元格的A列值复制到这个空单元格,再删除上方的行(比如A3为空时,先把A2的值复制到A3,再删除第2行)。

你当前的代码直接删除了空单元格的上一行,漏掉了复制值到空单元格的关键步骤,而且最后一行的判断用了B列,逻辑上不如直接用A列准确。下面是修正后的完整代码:

Sub RowAboveDelete()
    Dim ws As Worksheet: Set ws = Sheets("Sheet2")
    Dim lr As Long
    ' 取A列最后一行有数据的行号,更贴合需求场景
    lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long
    ' 从下往上循环,避免删除行后打乱未处理的行号顺序
    For i = lr To 2 Step -1
        ' 判断当前A列单元格是否为空
        If IsEmpty(ws.Cells(i, 1)) Then
            ' 复制上一行A列的值到当前空单元格
            ws.Cells(i, 1).Value = ws.Cells(i - 1, 1).Value
            ' 删除上方的行
            ws.Rows(i - 1).Delete
        End If
    Next i
End Sub

关键修正点说明

  • 把最后一行的判断改为A列:因为我们处理的是A列的空值,用A列的最后一行数据行号更准确,避免B列数据比A列多导致的无效循环。
  • 循环从lr到2:防止i=1时访问i-1(行0)引发错误。
  • 先赋值再删行:严格按照需求顺序执行,确保空单元格先获取值,再删除上方的冗余行。

内容的提问来源于stack exchange,提问作者FotoDJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:46:01