Home > Back-end >  How to count inverse errors using COUNTIF
How to count inverse errors using COUNTIF

Time:07-16

I am trying to clean my formulas

I favor using FILTER in my formulas. FILTER will return #N/A when it can not find any matches in a filter. And COUNTA includes #N/A errors in its count. So using this table with the following formulas.

A
foo
bar
baz
=COUNTA(FILTER(A1:A3, A1:A3 = "foo"))
=COUNTA(FILTER(A1:A3, A1:A3 = "bar"))
=COUNTA(FILTER(A1:A3, A1:A3 = "baz"))
=COUNTA(FILTER(A1:A3, A1:A3 = "Gabriel"))
=COUNTA(FILTER(A1:A3, A1:A3 = "bog"))
=COUNTA(FILTER(A1:A3, A1:A3 = "nit"))
=COUNTA(FILTER(A1:A3, A1:A3 = "bug"))

All of the following formulas will return 1. Even if it doesn't find a match! The value will be one because it is counting the #N/A

The only work around I have found is doing something like this

=IF(IFERROR(FILTER(A1:A3, A1:A3 = "bog"), -1) = -1, 0, COUNTA(FILTER(A1:A3, A1:A3 = "bog"))

This more than doubles the length of each formula I use this method on. In Excel I would just use LET but I need to use Google Sheets.

The closest I got to a solution is using COUNTIF

=COUNTIF(FILTER(A1:A3, A1:A3 = "foo"), NA())

This returns the number of #N/As in the list. Which would be 1 but I need something like

=COUNTIF(FILTER(A1:A3, A1:A3 = "foo"), "<>"&NA())

which doesn't work. Oddly enough it does the exact same thing as the formula previous.

Thanks in advance! God bless you all.

CodePudding user response:

You can add an IFNA() function to result in an empty cell, which COUNTA() doesn't count:

=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "foo"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "bar"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "baz"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "Gabriel"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "bog"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "nit"),))
=COUNTA(ifna(FILTER(A1:A3, A1:A3 = "bug"),))

ex

  • Related