Excel VBA:在For Next循环中使用Sum函数求和的问题
VBA循环中动态行的C-M列求和解决方案
正确代码写法
最可靠的写法是通过Cells对象定位区域,避免字符串拼接可能的错误:
Range("N" & i).Value = Application.WorksheetFunction.Sum(Range(Cells(i, "C"), Cells(i, "M")))
如果偏好字符串拼接,你最初的第一种写法语法本身没问题,但需要确保i是有效的整数行号(比如循环时i的范围是合法行号,且i被定义为数值类型如Long或Integer):
Range("N" & i).Value = Application.WorksheetFunction.Sum(Range("C" & i & ":" & "M" & i))
错误写法分析
- 第二种写法
Sum(Range("C" & i), Range("M" & i)):仅对C列和M列的单个单元格求和,而非C到M列的整个区域,不符合需求。 - 第三种写法
Sum("C" & i & ":" & "M" & i):WorksheetFunction.Sum需要传入Range对象,直接传单元格地址字符串会导致参数类型错误。
额外注意事项
- 确保循环变量
i被正确定义为数值类型(如Dim i As Long),避免因类型不匹配导致地址拼接失效。 - 如果操作的不是当前活动工作表,最好加上工作表对象限定(如
Sheet1.Range(...)),防止引用错误的工作表。
内容的提问来源于stack exchange,提问作者Benjamin W.
相关产品推荐
相关产品推荐

