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()
代码解决了这个问题。谢谢大家!
我一直在我的一个代码中使用 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()
代码解决了这个问题。谢谢大家!