Excel VBA - 在电子表格中添加数据后公式中断

Excel VBA - 在电子表格中添加数据后公式中断

[运行代码后出现错误信息1

[代码中断的行2

我的所有代码都运行良好,直到我在电子表格的第 5 行添加了数字。添加数据后,我的 COUNTIFS 公式不再返回正确的结果。

对于第 5 行,MonthsWithValues 应该等于 10;但是,现在每次运行代码时,它都会给出 0。我尝试使用 Step Into、Break Points/Toggle Points 和 Watch 对其进行调试。每次运行代码时,它都会一直显示 MonthsWithValue 的值为 0。救命!

代码:

For i = 5 To LastRow
MonthsWithValues = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", .Range(("M" & i), ("X" & i)), "<>""")
Next i

答案1

尝试删除 countifs 的第三个参数:

MonthsWithValues = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", "<>""")

只有 countifs 的第一个参数应该是范围;全部其他的应该是标准。你实际上是将范围作为标准。Excel 正在接受它(我不确定为什么,但可能是它将值与范围的第一个值进行比较),但它对于你想要的结果来说并不正确。

答案2

@Musselman,你说得对。它给我错误是因为MonthsWithValues没有用数字初始化,所以它被评估为 0。

正确的代码是:

Sub ReduceCost_Percentage()

With Worksheets("Analysis Worksheet")

Dim i As Long
Dim LastRow As Long
LastRow = Range("X" & Rows.Count).End(xlUp).Row
Dim Orig2016Total(68) As Long
Dim MonthsWithValues(68) As Long

For i = 5 To LastRow
Orig2016Total(i) = Excel.WorksheetFunction.Sum(.Range(("BC" & i), ("BN" & i)))
MonthsWithValues(i) = Excel.WorksheetFunction.CountIfs(.Range(("M" & i), ("X" & i)), "<>0", .Range(("M" & i), ("X" & i)), "<>""""")
Next i

现在一切正常!感谢大家的帮助!

相关内容