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

VBA使用For循环对Excel间隔6列区域按条件求和问题求助

问题排查与修正方案

错误点说明

  • SumIf参数语法错误:条件区域与求和区域为同一区域时,不需要传入第三个参数;原代码错误将单元格.Value属性值传入Range()构造参数,Range要求接收单元格对象或地址字符串,传入数值会触发类型错误。
  • 单元格引用未绑定工作表:Cells对象默认引用当前激活工作表的单元格,若运行代码时激活的不是Sheet1,会导致区域引用错位,甚至触发下标越界错误。

修正后代码

Dim m As Integer, totdamage As Double
Dim wsSource As Worksheet, wsCalc As Worksheet
' 提前绑定工作表,避免重复调用提升效率,也避免引用错误
Set wsSource = ThisWorkbook.Worksheets("Sheet1")
Set wsCalc = ThisWorkbook.Worksheets("Calculator")

For m = 1 To 20
    Dim colNum As Integer
    colNum = 6 * m + 1 ' 列号计算逻辑保留,m=1对应G列(第7列)符合需求
    ' 同区域条件求和SumIf只需传前两个参数即可
    totdamage = Application.WorksheetFunction.SumIf(wsSource.Range(wsSource.Cells(19, colNum), wsSource.Cells(28, colNum)), ">0")
    ' 结果写入Calculator表,写入逻辑和原需求一致
    wsCalc.Cells(m + 6, 31).Value = totdamage
Next m

可选优化

如果需要避免源区域存在非数值内容导致代码中断,可将Application.WorksheetFunction.SumIf替换为Application.SumIf,出错时会返回错误值写入单元格,不会直接终止程序运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 20:15:04