Excel Formula和WorksheetFunction公式的不同解决方法?
我一直在使用一个application.worksheetfunction.countifs
在我的代码之一,但似乎突然停止工作。 我用相同的格式将代码input到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)
macros中使用的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
我也尝试了第一个search条件为">0"
但是根本没有改变输出。
我对自己做错的事情感到莫名其妙,因为它正在工作一会儿,然后突然它只是按照下一个公式计算一些细胞。
是的,我知道我没有在Excel代码中包含空白单元格的参数,但这不是导致代码问题的原因。
请帮忙。
尝试使用Cell.Formula =
replaceCell.Value = Application.WorksheetFunction...
并构build一个代表所需公式的string。 您已经指出,input的公式会产生正确的结果。 通过代码复制该公式也将产生正确的结果。
Application.WorksheetFunction
只返回函数的结果 ,而不进一步检查你的代码,你不能看到这个公式与工作的不同。
原来,VBA代码很难读取search条件中的小数位数。 因此,把两个无限的数字相互比较是很困难的。 我不知道为什么Excel公式工作,但是,VBA没有,但是,我的search条件中的单元格之前,一个简单的Round()
代码解决了这个问题。 感谢大家!