たくさんのデータを扱っていると「これに該当するのはいくつあるんだ?」と個数が気になるときがあります。
そんなときに便利なのがCOUNT関係の関数です。
COUNT関数とCOUNTA関数|カウントしてくれる関数
例えば、前にも例に挙げた受験結果的サムシングなダミーデータで試してみましょう。

説明するより見た方が早かろうということで、16行目にCOUNT関数を、17行目にCOUNTA関数を追加して、5-14行目の10人分のデータをそれぞれの列でカウントさせました。

何が起こったかというと、COUNT関数は氏名や中学名、合否など、文字列だけが入った列では0になっています。
受験番号は9個。なぜかというと、吉田さんの番号を「’0840」にしてあるから、これは文字列扱いにしてカウントしていないんですね。
えー、ほかの受験番号も表示形式を文字列としたじゃん。なのにカウントされるの?
そうなんですよ、これがこの関数の厄介なところ。
COUNT関数
=COUNT(数値の個数を数えたい範囲)
※文字列やエラー値などはカウントされない。
ではCOUNTA関数の方はどうかというと、どの列も10になっています。
COUNTA関数は数値だろうが文字列だろうが、とにかく何個データがあるかカウントしてくれます。
COUNTA関数
=COUNTA(個数を数えたい範囲)
※文字列やエラー値などもカウントされる。空白セルはカウントされない。
これ、ワタシの場合は圧倒的にCOUNTA関数の方が出番が多いです。
なんだろう、逆に「文字列はカウントしたくないけど、数値はカウントしたい」というシーンが思い浮かばないというか…。
文字列と数値が入り混じっている箇所をなんとかしたいときに使うんですかね。知らんけど。
COUNTIF関数|条件に一致するデータの個数をカウント
そして、COUNTA関数と同様よく使うのがCOUNTIF関数です。
COUNTIF関数
=COUNTIF(個数を数えたい範囲, 検索条件)
IF関数やSUMIF関数を見てきましたから「はっはーん、さてはCOUNTIFは条件を指定してカウントする関数だな?」とお察しかと存じます。はい、その通りです。
例えば、ダミーデータで「第一中学校の生徒さんは何人いるのかしら」と数えてみましょう。

こんなカンジに、数えたいデータが含まれる範囲と、数えたいデータの条件を指定すればOKです。
この関数を知っていると「えーと、第一中学校は佐藤くんと、田中さんと…」と目視で数えるのが馬鹿馬鹿しくなりますね。
COUNTIFS関数|複数条件に一致するデータの個数をカウント
第一中学校の3人のうち、何人が合格したかを数えたい。
というときにはCOUNTIFS関数です。
「はっはーん、複数形のSってことは、複数条件を指定してカウントできるんだな?」と気づいたあなた、素晴らしい。その通りです。

こんなカンジに、範囲と条件を繰り返し指定してやります。
COUNTIFS関数
=COUNTIF(個数を数えたい範囲1, 検索条件1, 個数を数えたい範囲2, 検索条件2, …)

第一中学校からは合格者がひとりしか出なかった、というのがすぐカウントできます。ちょっと切ない。
個数を数える関数はCOUNTだけではない?!
ここまで駆使すれば数を数えるときに不便はないように思えます。
が、ついでにもうひとつ関数を知っておいてください。
例えば、合格者数を数えるとき、COUNTIF関数を使ってこんな風にカウントできます。

しかしもし何らかの作業でフィルターをかけていたとしたら。

可視セル(見えているセル)の個数を数える、なんて方法でもカウントできます。
そんなときにはSUBTOTAL関数を使用します。
SUBTOTAL関数
=SUBTOTAL(集計方法, 範囲)
今回の場合、こんな数式になります。

範囲はともかく、集計方法って何?! ってカンジですよね。
ワタシもいまだに全然覚えられなくて「集計方法って何?!」と思いながら、Excelちゃんが出してくれるヒントや検索結果を頼りにしています。
上の例では集計方法を「3」と指定していて、これは「範囲に対してCOUNTA関数と同じ集計をしてね」という意味です。
「3」ではなく「103」という指定方法もあります。何そのバリエーション。
SUBTOTALの集計方法は10個だか11個だかありますが、ワタシがよく使うのはこれだけ。
- 2または102:数値の個数を求める(COUNTと同じ)
- 3または103:データの個数を求める(COUNTAと同じ)
- 9または109:合計値を求める(SUMと同じ)
ほかに平均値だの最大値だの標準偏差だのを求める集計方法もありますが、それはそっちの関数を日常的に使うようになったらSUBTOTALでの集計方法の指定の仕方を覚えればよろしい。
ワタシはほとんどの場合、合計値さえわかりゃ済むという仕事なので、「可視セルが正しいか検算しよっかな。SUBTOTALで109だな」という雑な覚え方しかしておらず、たまに個数を求めるときに「あ、109じゃなかった、2だっけ、3だっけ…」と困惑することになります。
可視セルだけ集計するSUBTOTAL関数はすごく便利ですが、使い所は要注意。
自分だけのファイルなら別に構わんのですが、ほかの人とも共有するときには「フィルターだの非表示だので隠れた箇所は使っていないよ」とちゃんとわかるようにしておかないと、フィルタリング次第で数字がどんどん変わっていくから混乱を招きます。
おわりに
- データの個数を数えたいときは、COUNTA, COUNTIF, COUNTIFS関数にお任せ!
- 可視セルだけカウントしたい場合は、SUBTOTAL関数も便利!
そういえば大昔はCOUNTIFやCOUNTIFS関数ってなくって、IFとかADNとかORとかを駆使してデータ数を数えていたような…? 違ったかな?
データの個数を知りたい場面はあまりなさそうで意外とあるので、COUNTもSUBTOTALも使えるようになると便利です。

