4/08/2025

Excel。FILTER関数で抽出したデータの件数を結果に合わせて求めたい【count】

Excel。FILTER関数で抽出したデータの件数を結果に合わせて求めたい

<FILTER関数 ROWS関数>

A1:D8に店舗販売のデータがあります。

FILTER関数で抽出したデータの件数を結果に合わせて求めたい

この店舗販売のデータから、G1に設定した地域名をつかって、F5を起点として該当するデータを抽出したいわけです。


そこで、FILTER関数をつかうことにしました。

F5に設定した数式は、

=FILTER(A2:D8,C2:C8=G1,"該当なし")


これで、地域が関西のデータを抽出することができました。


FILTER関数を確認しておきます。


最初の引数は、「配列」。

範囲のことなので、A2:D8。


FILTER関数は、スピル機能対応の関数なので、絶対参照は不要です。


2つ目の引数は、「含む」。


条件のことなので、C2:C8=G1。

条件の列はC2:C8で、抽出条件は、G1に入力されています。

それと合致するかどうかという条件式です。


3つ目の引数は、「空の場合」。


データがなかった場合にどう処理するのかということなので、”該当なし”と表示する様にしました。


スピル機能対応の関数なので、オートフィルで数式をコピーする必要はありません。


さて、抽出することはできましたが、今回やりたいことは、抽出された件数をG2に求めたいわけです。


件数なので、COUNT関数をつかってみればいいはずです。


G2に、

=COUNT(F5:F6)

と設定すれば、2件と求めることができました。


一度だけならば、これでいいのですが、地域を「関東」に変更してみると、3件抽出されてましたが、件数は2のままです。


範囲は、F5:F6と固定されていますので、連動してくれません。


仮に、F列の下方向に、何もデータがなければ、F5:F200とか想定される上限の範囲設定をしていてもいいかもしれません。


しかし、下方向にデータがある場合などには、少し都合が悪くなります。


抽出に連動した範囲にすることはできないのでしょうか。


そこでROWS関数をつかうことにします。

ROWS関数は、範囲に含まれる行数を求めることができる関数です。


ROW関数は、セル番地の行数なので、ROW関数では対応できません。


G2にROWS関数の数式を設定します。


=ROWS(F5#)

これで確定します。


条件を関東に変更しても、件数は3件と正しく求めることができました。


FILTER関数で自動的に範囲が変動しても、ROWS関数は抽出結果に合わせて行数を求めてくれます。


行数はデータの件数と同じなので、COUNT系の関数をつかわなくても、抽出したデータの件数を求めることができるというわけです。