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

VBA使用WorksheetFunction.Sum间隔3列求和结果为0如何修正

VBA间隔3列求和代码修正说明

错误原因

  • 赋值逻辑错误:现有代码每次内循环都会直接覆盖目标单元格的内容,没有累加前序单元格的数值,最终单元格仅保留最后一次循环的单个单元格值,若最后一个计算单元格为0,结果就会显示为0。
  • 列范围偏移错误:你需要求和的列范围是第4、7、10……48列,现有循环i = 3 To 48 Step 3配合i+1取列,最终会取到第49列,超出你需要的最大列范围。

修正方案

方案1:逐次累加(逻辑简单,适合小数据量场景)

For j = 1 To 54
    ' 初始化目标单元格值为0,避免历史数据干扰
    Cells(4 + j, 54) = 0
    ' 直接遍历你需要求和的列:4到48,步长3
    For i = 4 To 48 Step 3
        Cells(4 + j, 54) = Cells(4 + j, 54) + Cells(4 + j, i)
    Next i
Next j

方案2:合并Range一次性求和(性能更优,自动忽略文本值)

Dim sumRng As Range
For j = 1 To 54
    Set sumRng = Nothing
    For i = 4 To 48 Step 3
        ' 把所有符合要求的单元格合并为一个Range对象
        If sumRng Is Nothing Then
            Set sumRng = Cells(4 + j, i)
        Else
            Set sumRng = Union(sumRng, Cells(4 + j, i))
        End If
    Next i
    ' 调用Sum函数一次性计算
    Cells(4 + j, 54) = WorksheetFunction.Sum(sumRng)
Next j

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:54:00