[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
现在一切正常!感谢大家的帮助!