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

如何高效编写VBA宏批量更新每行的单元格数值

优化VBA宏实现批量行更新

基础循环版本(易理解,适配常规场景)

直接定位G列最后一行数据,循环处理每一行,避免硬编码行号,同时去掉低效的Select操作:

Sub UpdateQty()
    Dim lastRow As Long
    Dim i As Long
    
    ' 获取G列从第3行开始的最后一行数据行号
    lastRow = Cells(Rows.Count, "G").End(xlUp).Row
    
    ' 若G列第3行及以下无数据,直接退出宏
    If lastRow < 3 Then Exit Sub
    
    ' 从第3行循环到最后一行
    For i = 3 To lastRow
        ' 累加G列数值到H列,自动处理G列空单元格(避免出错)
        Cells(i, "H").Value = Cells(i, "H").Value + IIf(IsEmpty(Cells(i, "G")), 0, Cells(i, "G").Value)
        ' 清空当前行G列内容
        Cells(i, "G").ClearContents
    Next i
    
    ' 可选:定位回G3,方便后续输入
    Range("G3").Select
End Sub

数组优化版本(大数据量推荐,效率更高)

当G/H列数据行数较多时,用数组批量读写内存数据,减少和工作表的交互次数,大幅提升运行速度:

Sub UpdateQty_Array()
    Dim lastRow As Long
    Dim gData As Variant, hData As Variant
    Dim i As Long
    
    lastRow = Cells(Rows.Count, "G").End(xlUp).Row
    If lastRow < 3 Then Exit Sub
    
    ' 将G、H列数据一次性读入内存数组
    gData = Range("G3:G" & lastRow).Value
    hData = Range("H3:H" & lastRow).Value
    
    ' 内存中循环处理数据
    For i = LBound(gData) To UBound(gData)
        hData(i, 1) = hData(i, 1) + IIf(IsEmpty(gData(i, 1)), 0, gData(i, 1))
        gData(i, 1) = ""
    Next i
    
    ' 将处理后的数组写回工作表
    Range("G3:G" & lastRow).Value = gData
    Range("H3:H" & lastRow).Value = hData
    
    Range("G3").Select
End Sub

结构化表格适配版本(若使用Excel表)

如果你的数据是Excel结构化表格(ListObject),用表格对象操作更稳定,无需担心行号变化:

Sub UpdateQty_Table()
    Dim tbl As ListObject
    Dim listRow As ListRow
    
    ' 替换为你的表格所在工作表名称和表格名称
    Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
    
    For Each listRow In tbl.ListRows
        ' 替换为表格中G、H列的实际列名(比如"输入数量"、"累计数量"),比列号更直观
        listRow.Range("累计数量").Value = listRow.Range("累计数量").Value + IIf(IsEmpty(listRow.Range("输入数量")), 0, listRow.Range("输入数量").Value)
        listRow.Range("输入数量").ClearContents
    Next listRow
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:54:59