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

如何用VBA Do Loop实现单元格累加超40后停止并统计单元格数量

VBA Do Loop实现单元格累加阈值停止计数方案

原有代码问题

你提供的参考代码逻辑存在错误:内层For循环会一次性完成D1~D10全量单元格的累加,再判断Do循环的停止条件,完全无法实现「累加和超过40立即停止」的需求,无需嵌套两层循环,直接通过Do Loop遍历单元格即可。

正确实现代码

先判断后执行版本(Do While ... Loop)

Sub CountCellsWhenSumOver40()
    Dim sumVal As Integer
    Dim i As Integer
    Dim count As Integer
    
    ' 初始化变量
    sumVal = 0
    i = 1
    count = 0
    
    ' 遍历D列1~10行,累加超过40或遍历完10个单元格即停止
    Do While i <= 10 And sumVal <= 40
        sumVal = sumVal + Cells(i, 4).Value
        count = count + 1
        i = i + 1
    Loop
    
    ' 输出参与累加的单元格数量
    MsgBox "参与累加的单元格数量为:" & count
End Sub

先执行后判断版本(Do ... Loop While)

如果需求要求必须先累加一次再做阈值判断,可以用该写法,核心逻辑和上方一致,仅判断时机后置:

Sub CountCellsWhenSumOver40()
    Dim sumVal As Integer
    Dim i As Integer
    Dim count As Integer
    
    sumVal = 0
    i = 1
    count = 0
    
    Do
        sumVal = sumVal + Cells(i, 4).Value
        count = count + 1
        i = i + 1
    Loop While i <= 10 And sumVal <= 40
    
    MsgBox "参与累加的单元格数量为:" & count
End Sub

逻辑说明

  • 变量sumVal存储累加和,i为行号计数器,count统计参与累加的单元格数量
  • Do循环的判断条件同时限制两个停止触发逻辑:遍历完D1~D10所有单元格、累加和超过40,任意条件满足就停止循环
  • 循环内每累加一个单元格就同步更新计数和行号,最终输出的count就是符合要求的单元格数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:54:02