【问题标题】:Excel formula for count cells if not null, invalid or 0如果不为空、无效或为 0,则计算单元格的 Excel 公式
【发布时间】:2014-09-04 09:20:08
【问题描述】:

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

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

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

#######
VALUE?
r

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

【问题讨论】:

  • 我不相信有任何公式可以排除 ####### 如果该显示是由于列太小而无法显示数值,或者如果该显示存在因为日期为负。公式将查看单元格中的基础值,而不是显示。

标签: excel excel-formula


【解决方案1】:

下面的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,""))

【讨论】:

  • 我不确定 COUNTIFS 函数是否可以返回 FALSE。你是直接复制粘贴公式的吗?
  • &amp; 的用途是什么?
  • 它将“”运算符与空字符串“”连接起来。我认为 """" 无效。
  • 当我尝试时,您的公式在计数中包含错误
  • “NIL”是字符串还是某种类型的错误。将其更新为 N/A。
【解决方案2】:

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

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

“E”列是您的被视为无效值的列表。将其拖到您的条件旁边并求和。

编辑:我不知道计数。因此,这里有几个解决方案,具体取决于您的偏好。

【讨论】:

    【解决方案3】:

    这个公式将只计算数字 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
    

    【讨论】:

    • 哇,这让我很头疼...你在哪里实现这个?
    • 好吧,SUMPRODUCT 公式将计算您的数字 0,并排除所有内容,除非它无法处理当列太小时显示的 ###### 显示,或者如果公式导致负时间。我将更新我对如何使用用户定义函数的回复
    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多