Excel。FILTER関数で抽出したデータの件数を結果に合わせて求めたい
<FILTER関数 ROWS関数>
A1:D8に店舗販売のデータがあります。
この店舗販売のデータから、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系の関数をつかわなくても、抽出したデータの件数を求めることができるというわけです。