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

VBA中SUM正常但SUMIF触发Run-time error '1004'问题排查

VBA SUMIF公式触发Run-time error '1004'的原因及修复

错误核心原因

  • VBA设置单元格.Formula属性时,强制要求使用英文逗号,作为函数参数分隔符,与系统区域设置无关。你代码里用了分号;分隔SUMIF的参数,这是触发1004错误的直接原因。
  • 手动粘贴公式能正常计算,是因为Excel会根据当前系统区域设置自动识别分号作为分隔符,但VBA的.Formula属性不支持这种区域适配,必须用英文逗号。

修复后的代码

Sub Example()
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Sheets("Sheet2")
    Dim Rng As Range
    Dim WorkRng As Range
    Set WorkRng = ws.Range("E2:E6")
    
    For Each Rng In WorkRng
        Rng.Offset(0, 1).Formula = "=" & Rng.Address & "*SUM(Table1[Column2])"
        ' 将分号替换为英文逗号
        Rng.Offset(0, 2).Formula = "=" & Rng.Address & "*SUMIF(Table1[Column1]," & Rng.Offset(0, -1).Address & ",Table1[Column2])"
    Next
End Sub

额外优化建议

  • 用&代替+做字符串拼接:+在VBA中可能会和数值加法逻辑混淆,&是专门的字符串连接运算符,更安全可靠。
  • 变量命名可以更简洁:比如将workSheet改为ws,既不影响功能,也提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:20:10