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

VBA插入行时如何使A、B列单元格继承上方行对应值?

问题解决:根据B列值插入行并复制上方单元格内容

你的核心问题是用(i - 1)获取了行号,但实际需要复制当前匹配行(第i行)的A、B列单元格值到新插入的行中。以下是修正后的代码及关键说明:

修正后的完整代码

Sub insertrow()
    Dim i As Integer
    Dim lastRow As Integer
    
    ' 获取B列实际有数据的最后一行行号,避免无效循环
    lastRow = Cells(Rows.Count, 2).End(xlUp).Row
    
    ' 倒序循环,防止插入行后漏处理后续目标行
    For i = lastRow To 1 Step -1
        ' 判断B列单元格是否以"Mon"开头(不区分大小写)
        If InStr(1, Cells(i, 2).Value, "Mon", vbTextCompare) = 1 Then
            ' 在当前行下方插入新行
            Cells(i + 1, 1).EntireRow.Insert
            ' 复制上方行的A列值到新行A列
            Cells(i + 1, 1).Value = Cells(i, 1).Value
            ' 复制上方行的B列值到新行B列
            Cells(i + 1, 2).Value = Cells(i, 2).Value
            ' 设置新行C列固定值为"ERP"
            Cells(i + 1, 3).Value = "ERP"
        End If
    Next i
End Sub

关键修改说明

  • 核心逻辑修正:将原来的Cells(i + 1, 1).Value = (i - 1)替换为Cells(i + 1, 1).Value = Cells(i, 1).Value,B列同理,直接引用当前行的单元格值,而非行号计算结果。
  • 优化循环范围:用lastRow获取B列实际数据的最后一行,代替固定的1000,减少无效循环。
  • 倒序循环优化:从最后一行往前遍历,避免正序插入行后,后续目标行被下移导致漏处理的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:51:03