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()代码解决了这个问题。 感谢大家!