将错误值计算为任何其他值

Counting error values as any other value

我有如下所示的数据列表。我正在尝试计算每个唯一值出现的次数。

但是其中有些值是错误值,比如#N/A。有没有既能统计正常值又能统计错误值的公式?

这个(作为数组公式输入)可以计算 a 和其他常规值:

=SUM(--IFERROR($A:$A=C2,FALSE))

但是如果我把它复制下来,显然它对错误值总数不起作用,因为它忽略了使用 IFERROR 的错误。

我知道我可以用这个数 #N/A

=SUM(--ISNA($A:$A))

但这是完全不同的公式;我不能只是将它复制到列中。

我正在寻找一个可以在没有 "changing the source code" 的情况下同时满足两者的公式。

COUNTIF 确实正确地计算了它们,但我不认为我可以使用它,因为这只是一个更大的数组公式的一部分。

试试这个小 UDF():

Public Function Kount(rng As Range, what As Variant) As Long
    Dim r As Range, st1 As String, st2 As String
    st1 = CStr(what)
    For Each r In rng
        st2 = r.Text
        If st1 = st2 Then
            Kount = Kount + 1
        End If
    Next r
End Function

例如:

在此示例中,C4C5 都是文本值。

如果您无法使用 COUNTIF,请尝试使用 D2

中的公式
{=SUM(IFERROR($A:$A=C2,FALSE)+IFERROR(ERROR.TYPE($A:$A)=ERROR.TYPE(C2),FALSE))}

=SUM(--IF(ISERROR(C2),IF(ISNA(C2),COUNTIF($A:$A,"#N/A"),COUNTIF($A:$A,"#VALUE!")),IFERROR($A:$A=C2,FALSE)))

看起来这完成了你想要的,并且在数组公式中对我有用。