
ExcelやGoogleスプレッドシートで、データ範囲が空白なのに、COUNTA関数の結果が「1」になることがあります。この記事では、IFERROR関数を活用して#N/Aをカウントせずに、値が入力されているセルのみを集計する方法を解説しているので、ぜひ参考にしてみてください。
COUNTA関数が1になる原因と解決方法

COUNTA関数の結果が「1」になってしまうのは、COUNTA関数とFILTER関数を組み合わせて次のような数式を組んだときに発生する場合があります
例:=COUNTA(FILTER(A2:A4,A2:A4="りんご"))
この数式では、まずデータ範囲を「りんご」と一致する行にフィルタリングし、その結果の個数をCOUNTA関数で数えようとしています。
FILTER関数の引数:(範囲, 条件1, [条件2, …])

ところが、このケースでは、FILTER関数が参照している範囲に条件と一致する値が一つもない場合でも、COUNTA関数の結果が「1」になってしまうことがあります。
なぜ空白なのに「1」になるの?

これは、FILTER関数が一致する値がないときに「#N/A」というエラー値を返し、それをCOUNTA関数が「値がある」と見なして集計してしまっていることが原因です。
「1」になる問題を解決する方法

この問題を解決するには、FILTER関数がエラーを返した場合に、IFERROR関数を使って空白を返すようにします。
例: =COUNTA(IFERROR(FILTER(A2:A4,A2:A4="りんご")))
ここで重要なのが、IFERROR関数の「エラー値」を省略することです。
もしエラー値に""
などを指定してしまうと、COUNTA関数はそれを空の文字列として認識し、また「1」として集計してしまいます。
IFERROR関数の構成要素:(値, [エラー値])