Excel公式和WorksheetFunction公式的求解方法不同?

Different solving method for Excel Formula and WorksheetFunction formula?

我一直在我的一个代码中使用 application.worksheetfunction.countifs,但它似乎突然停止工作了。我以相同的格式将代码输入 excel,它可以正常工作,但 VBA 代码没有。

=COUNTIFS($D:$D82,  ">0", $E:$E82, E3, $L:$L82, L3, $B:$B82, B3, $T:$T82, "<=" & T3, $U:$U82, "<=" & 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 代码中包含空白单元格的参数,但这不是导致代码问题的原因。

请帮忙。

尝试用 Cell.Formula = 替换 Cell.Value = Application.WorksheetFunction... 并构建一个表示所需公式的字符串。您已经声明公式在输入时会产生正确的结果。通过代码复制该公式也将产生正确的结果。

Application.WorksheetFunction 仅 returns 函数的 result,如果不进一步检查您的代码,您看不出这个公式与一个有效的。

原来 VBA 代码很难读取搜索条件中的小数位数。因此,很难将两个无限舍入的数字相互比较。我不确定为什么 Excel 公式有效,但是 VBA 没有,然而,在我的搜索条件中的单元格之前的一个简单的 Round() 代码解决了这个问题。谢谢大家!