Excelで、値が入力されているセルの数をカウントする関数としてCOUNTA()やSUBTOTAL()、AGGREGATE()などがあります。
いずれも値が入力されたセルをカウントさせることができますが、数式が入力されているものの、見かけ上は空白に見えるセル(長さ0の文字列が入ったセル)も一緒にカウントされてしまいます。
分かりやすく言えば、式の結果が「""」を返すようになっているセルもカウントされてしまう、という状態。
できれば、「""」が入力されたセルは空白として認識してほしいですよね。目に見えて値が入力されたセルだけをカウントさせるには、以下の方法を使えば解決です。
COUNT()関数を使う
数値のみが表示されるセルであれば、COUNT()関数を使って以下のように指定することで、空白セル(「数式が入っているが見かけ上は空白のセル」も含む)はカウントされません。
=COUNT(範囲)
ただし、数値のみが表示されているセルしかカウントされませんので、数値以外が表示されるセルであれば、この方法は使えません。日付や時間は、内部的には数値ですのでカウントされます。
例:
セルに表示された値が「1111」 → カウント対象
セルに表示された値が「千百十一」 → カウント対象外
セルに表示された値が「2020/03/26」 → カウント対象
COUNTIF()関数を使う
文字列のみが表示されるセルであれば、COUNTIF()関数を使って以下のように指定することで、空白セル(「数式が入っているが見かけ上は空白のセル」も含む)はカウントされません。
=COUNTIF(範囲,"?*")
ただし、数値のみが表示されているセル以外しかカウントされませんので、数値のみが表示されるセルであれば、この方法は使えません。日付や時間などもカウント対象外です。
例:
セルに表示された値が「1111」 → カウント対象外
セルに表示された値が「千百十一」 → カウント対象
セルに表示された値が「2020/03/26」 → カウント対象外
COUNT()とCOUNTIF()関数を併用する
COUNTIF()関数が文字列しかカウントしないなら、数値しかカウントしないCOUNT()関数と組み合わせればよさそうですね。
=COUNT(範囲)+COUNTIF(範囲,"?*")
これで、数値(日付・時間含む)でも文字列でもカウントされるようになります。
COUNTBLANK()関数を併用する
カウントしたいセル全てに、必ず数式が入るのであれば、COUNTA()関数とCOUNTBLANK()関数を併用してもカウントできます。
=COUNTA(範囲)-COUNTBLANK(範囲)
指定した範囲内に、数式も入らない完全に空白なセルが存在する場合は、正しい結果にならないため、注意が必要です。
さいごに
COUNTA()関数が、長さ0の文字列「""」もカウントしなければ、悩む必要はないんですけどね。何か情報が入っているセルをカウントする、という関数のようなので、その辺は仕方ないですかね。
個人的には、COUNTBLANK()関数の逆バージョンがあればうれしいな、と思いますが、現状でも組み合わせて何とかなるので、特別不便は感じていないです。はい。
コメント