计数单元格的Excel公式如果不为null,则为无效或0

时间:2014-09-03 23:32:51

标签: excel excel-formula

我有一个公式,我想用它来检查一个单元格中是否没有“无效”值。但是,它也在计算空单元格,以及其中包含任何不等于零的任何单元格:

=COUNTIF(A2:A200,"<>0")

这仅检查单元格的值是否为“0”。我可以添加什么,以便它不会计算空单元格或具有以下值的单元格:

#######
VALUE?
r

等。我想要的只是计算有多少单元格中有一个不等于0的数字,或者是错误。

3 个答案:

答案 0 :(得分:2)

下面的array formula首先计算所有非0和非空值,然后减去包含错误的单元格数。

您需要按CTRL + SHIFT + ENTER才能正确执行此公式:

=COUNTIFS(A2:A200,"<>0", A2:A200,"<>"&"", A2:A200,"<>"&"NIL") - SUM(IF(ISERROR(A2:A200),1,"")) - SUM(IF(ISNA(A2:A200),1,""))

答案 1 :(得分:1)

此公式仅计算数字&lt;&gt; 0,不包括空格,错误消息等。但是,如果出现原因,它不会排除显示 ######(但真的包含数字)的单元格这是一个太窄的列,或者是负日期或时间值。

 =SUMPRODUCT(--ISNUMBER(A2:A200))-COUNTIF(A2:A200,0)

如果你真的想避免计算显示#######的单元格,当底层内容是一个不等于零的数字时,你需要使用UDF来处理单元格的Text属性。此外,缩小或加宽列以产生该影响不会触发更新公式的计算事件,因此您需要以某种方式执行此操作以确保公式结果正确。

这就是为什么我将Application.Volatile添加到代码中,但仍然可能产生这样的情况:公式的结果与正在检查的范围中的显示不一致,至少在下一个计算事件发生之前的地方。

要输入此用户定义函数(UDF), alt-F11 将打开Visual Basic编辑器。 确保在Project Explorer窗口中突出显示您的项目。 然后,从顶部菜单中选择“插入/模块” 将下面的代码粘贴到打开的窗口中。

要使用此用户定义函数(UDF),请输入类似

的公式
 =CountNumbersNEZero(A2:A200)

在某个单元格中。

Option Explicit
Function CountNumbersNEZero(rg As Range) As Long
Application.Volatile
    Dim C As Range
    Dim L As Double
For Each C In rg
    If IsNumeric(C.Text) Then
        If C.Text <> 0 Then L = L + 1
    End If
Next C
CountNumbersNEZero = L
End Function

答案 2 :(得分:0)

您最多可以嵌套7个有效或无效的条目。如果您需要更多,您可能应该为您的“黑名单”列指定一个列,当事件导致您认为不应该有效的计数时,您可以添加该列。例如:

=IF(ISERR(VLOOKUP(A1,Sheet1!E:E,1,FALSE))=FALSE,1,0)

列“E”是您认为无效的值列表。将其向下拖动到您的标准旁边并加总。

编辑:我不知道countifs。所以你有几个解决方案,这取决于你的偏好。