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
相关产品推荐
相关产品推荐

