【发布时间】:2015-02-03 01:29:58
【问题描述】:
我一直在我的一个代码中使用application.worksheetfunction.countifs,但它似乎突然停止工作。我以相同的格式将代码输入到 excel 中,它可以正常工作,但 VBA 代码不能。
=COUNTIFS($D$2:$D$2582, ">0", $E$2:$E$2582, E3, $L$2:$L$2582, L3, $B$2:$B$2582, B3, $T$2:$T$2582, "<=" & T3, $U$2:$U$2582, "<=" & U3)
宏中使用的VBA代码:
For Each Cell In Range("R2:R" & LastRow)
If Cell.Offset(0, -3) = "" Then
Cell.Value = ""
Else: Cell.Value = Application.WorksheetFunction.CountIfs(Range("D2:D" &
LastRow), ">" & 0, Range("E2:E" & LastRow), Cell.Offset(0, -13),
Range("L2:L" & LastRow), Cell.Offset(0, -6), Range("B2:B" &
LastRow), Cell.Offset(0, -16), Range("T2:T" & LastRow), "<=" &
Cell.Offset(0, 2), Range("U2:U" & LastRow), "<=" & Cell.Offset(0,
3))
End If
Next Cell
我还尝试将第一个搜索条件设为">0",但这根本没有改变输出。
我对自己做错了什么感到完全困惑,因为它前一刻还在工作,然后突然它只在下一分钟根据公式计算了一些细胞。
是的,我知道我没有在 excel 代码中包含空白单元格的参数,但这不是导致代码问题的原因。
请帮忙。
【问题讨论】:
-
我认为您需要在代码或电子表格中提供有关您可能已更改的内容的更多信息。您真的希望我们相信您的计算机“突然”改变了它执行代码的方式吗?
-
如果你还是使用带循环的 VBA,为什么不直接使用 if 语句和变量来计算呢?
-
那些没有下划线
_的新代码行是否继续? -
LastRow的值相当于2582。另外,我把代码中的下划线去掉了,避免混淆,让代码更容易理解。