エクセルのフィルターで抽出した値は関数でカウントしよう!

エクセルでフィルターをかけて抽出したセルだけをカウントすることってできるんですか?やってみたんですけど、すべてのセルがカウントされてしまうんです。

SUBTOTAL関数を使えば、フィルターをかけた後のセルの数だけをカウントできるよ。
通常、セルの数をカウントしたい場合、セルに入力されている値が数字なのか文字なのかによって使用する関数が変わります。
しかし、フィルターをかけたときは、値が数字であっても文字であってもSUBTOTAL関数でカウントすることができます。
- 設置したフィルターをすべて解除し、カウントした数字が入力できるデータを準備する
- カウントした数字を入力したいセルにSUBTOTAL関数を挿入
- 挿入されているフィルターボタンを使って、必要なデータを抽出
SUBTOTAL関数は、関数の引数を変更するだけでカウント以外にも合計、平均、最小値、最大値などが計算できる便利な関数です。
本記事では、SUBTOTAL関数を使ってフィルターをかけた後に表示されているセルだけをカウントする方法を紹介していますので、参考にしてみてください。
フィルターをかけたセルをカウントする方法以外にも、エクセルのフィルターに関連する記事があります。
こちらの記事もぜひ参考にしてみてください。
エクセルのSUBTOTAL関数を使うとフィルターをかけたあとのセルだけをカウントできる
エクセルでフィルターをかけた後のセルだけをカウントしたい場合は、SUBTOTAL(サブトータル)関数を使います。
SUBTOTAL関数って何ですか?
SUBTOTAL関数は、集計方法(カウント、合計、平均値など)を指定して計算できる便利な関数なんだ。
通常、セルをカウントしたい場合は、COUNT(カウント)関数やCOUNTA(カウントエー)関数を使います。
しかし、COUNT関数またはCOUNTA関数は、フィルターで非表示になっているセルもカウントされてしまうため、フィルターをかけたデータには使用することができません。
SUBTOTAL関数を使えば、フィルターをかけた後に表示されているセルだけをカウントすることが可能です。
SUBTOTAL関数の関数構文は、「=SUBTOTAL(集計方法,参照)」です。
集計方法に入力する引数は、計算したい内容によって特定の数字が決まっています。
主な集計方法の引数は、以下の通りです。
集計方法 | 集計の種類 | 引数で表示される関数名 |
---|---|---|
1または101 | 平均値を計算 | AVERAGE |
2または102 | 数値の個数を計算 | COUNT |
3または103 | 空白以外のセルの個数を計算 | COUNTA |
4または104 | 最大値を計算 | MAX |
5または105 | 最小値を計算 | MIN |
9または109 | 合計値を計算 | SUM |
セルをカウントする場合は、数値の個数を計算する「2」または「102」、空白以外のセルの個数を計算する「3」または「103」を使います。
通常は、集計方法の数字が1桁の「2」または「3」を入力しますが、表データがグループ化されていた場合は、「102」または「103」の使用がおすすめです。
SUBTOTAL関数を使ってフィルターで抽出した値をカウントする手順
SUBTOTAL関数を使って、フィルターで抽出したセルだけをカウントする手順を紹介します。
フィルターを挿入したデータとカウントした結果を入力するセルを準備します。
- セルの数をカウントした結果を表示したいセルをクリックして「=su」と入力
- 表示された関数名の中にある「SUBTOTAL」をダブルクリックする
「集計方法」に入力する関数名が表示されるので、「3-COUNTA」をダブルクリックしてください。
- 「,(カンマ)」を入力
- カウントしたいセル範囲をドラッグ
- 「)」を入力
- Enterで確定する
=SUBTOTAL(3,A2:A6)
フィルターをかける前のセルの数が表示されました。
- フィルターボタンを押す
- (すべて選択)のチェックボックスをクリックして、すべてのチェックを解除する
- 「みかん」にチェックを入れる
- 「OK」を押す
関数の結果が変わり、フィルターをかけた後のセルの数を表示することができました。
エクセルのSUBTOTAL関数とCOUNT関数・COUNTA関数の違いと使い分け

セルの数を数えたいときは、COUNT関数やCOUNTA関数に加えてSUBTOTAL関数も使えるってことですよね?違いと使い分け方がよくわからないので、教えてください。
セルの数を正しくカウントするために、この3つの関数の違いと使い分け方を教えるね。
フィルターをかけた後のセルの数だけではなく、データが入力されているセルの数をカウントしたいケースは意外と多いですよね。
セルの数を正しくカウントするために、この3つの関数の違いをしっかり覚えておきましょう。
SUBTOTAL関数
SUBTOTAL関数は、フィルターをかけた後のセルの数を数えたいときに便利な関数です。
前述で紹介したように、フィルターをかけなければすべてのセルの数をカウントすることも可能です。
SUBTOTAL関数のメリットは他にもあるよ!
集計方法を変えると、数値が入力されているセルも文字が入力されているセルも両方カウントすることが可能です。
また、カウント以外にも平均や最大値、最小値などを求めることができるので覚えておくと便利です。
COUNT関数
COUNT関数は、数値が入力されているセルだけをカウントしたいときに使用する関数です。
フィルターを設定していない場合や、同じ列に数字と文字が混在しているデータから数字が入力されているセルだけをカウントしたい場合は、COUNT関数を使います。
ただし、フィルターをかけた値だけをカウントしたい場合、COUNT関数は使用できないので注意してください。
COUNTA関数
COUNTA関数は、空白以外のセル、つまり数字・文字・記号など何らかのデータが入力されているセルをカウントしたいときに使用する関数です。
上記のように、空白以外の数字・文字・記号が入力されているセルをカウントすることができます。
ただし、数字と文字が混在していた場合、数字だけまたは文字だけのように分けてカウントすることはできません。
COUNTA関数もCOUNT関数と同様で、フィルターをかけた後に表示されているセルだけをカウントすることはできないので注意しましょう。
重複データを除いてフィルターをかけた値だけをカウントしたいときはIF関数とCOUNTIF関数を活用する
完全に内容が一致している重複データがあるデータにフィルターをかけて、重複データを除いたセルの数をカウントしたいんですけど、どうしたらいいですか?
Office365またはExcel2021以降のバージョンを使っている場合は、UNIQUE関数を使う方法もあるんだけど、エクセルのバージョンに関係なく操作できるIF関数とCOUNTIF関数を活用した方法を紹介するね。
UNIQUE(ユニーク)関数とは、Office365またはExcel2021以降のバージョンで使用できる関数で、重複のないデータが簡単に抽出できる関数です。
これは、UNIQUE関数を使って重複データを除いた画像です。
Office365またはExcel2021以降のエクセルを使用している場合は、重複データを取り除ける便利な関数ですが、それ以外のエクセルを使用している場合はこの関数は使用できません。
UNIQUE関数はエクセルのバージョンによっては使用できないケースがあるため、今回はIF関数とCOUNTIF関数を組み合わせた方法を紹介します。
この画像の表のデータは、同じ色で塗りつぶされているものがすべて重複しています。
このデータのブロック名でフィルターをかけ、重複データを除いた支店数をカウントしてみましょう。
データを結合する
はじめに、「ブロック名」と「支店名」を組み合わせたデータの中に重複するデータがあるかを確認するために、データの結合を行います。
これは、ブロック名が同じでも支店が違う場合は、別のデータだと認識させるために必要になる操作だよ。
Eの3に「=IF(B3="","",B3&"/"&C3)」を挿入して、「ブロック名」と「支店」のデータを連結します。
計算式を挿入したら、Enterで数式を確定してください。
=IF(B3="","",B3&"/"&C3)
今回は、ブロック名に空白のセルがあることを想定して上記のIF関数を挿入していますが、空白がない場合は以下の計算式を挿入してもかまいません。
=B3&"/"&C3
挿入した計算式をコピーしてください。
すべてのデータを連結することができました。
IF関数とCOUNTIF関数を使って1度だけ出てきたデータを調べる
連結したデータには重複したデータが含まれているため、IF関数とCOUNTIF関数を使って1度だけ出てきたデータを調べましょう。
「Fの3」をクリックして、「=IF(E3="","",IF(COUNTIF(E$3:E3,E3)=1,MAX(F$1:F1)+1,""))」と入力します。
=IF(E3="","",IF(COUNTIF(E$3:E3,E3)=1,MAX(F$1:F1)+1,""))
E列に空白がない場合は、以下の計算式を挿入してもかまいません。
=IF(COUNTIF(E$3:E3,E3)=1,MAX(F$1:F1)+1,"")
補足説明
挿入する計算式が少し複雑なので、補足説明をします。
「COUNTIF(E$3:E3,E3)=1」について
「COUNTIF(E$3:E3,E3)=1」の部分は、「E3からE3の範囲の中に、E3の値が何回出てきているか」を数えています。E3の値が範囲内に一度だけ登場しているときは、結果に「1」と表示されます。
「IF(COUNTIF(E$3:E3,E3)=1,MAX(F$1:F1)+1,"")」について
もしE4の値がその範囲内に一度だけ出てきた場合は、「MAX(F$1:F1)+1」の処理を行い、そうでない場合は空白を返すという意味です。
「MAX(F$1:F1)+1」について
F列の最大値を調べ、その最大値に1を足した値を返すために挿入しています。
「=IF(E3="","",IF(COUNTIF(E$3:E3,E3)=1,MAX(F$1:F1)+1,""))」は、「E列の中で、その行の値が最初に出てきた場合(重複していなければ)、F列の最大値に1を足した値を返す。重複している場合は空白を返す。」という意味の計算式です。
「Fの3」のセルをクリックしなおして、計算式をコピーしましょう。
重複していないデータだけに番号が表示されました。
SUBTOTAL関数を使って重複していないセルの数をカウントする
先ほど表示した番号を使って、重複していないセルの数をカウントするためのSUBTOTAL関数を挿入します。
「Dの1」のセルをクリックします。
選択したセルに「=SUBTOTAL(2,F:F)」と入力し、Enterで確定してください。
=SUBTOTAL(2,F:F)
補足説明
SUBTOTAL関数の集計方法の「2」は、数字が挿入されているセルの数をカウントします。
引数の範囲を「F:F」のように指定すると、F列のすべての範囲を指定できます。
フィルターをかける前の重複していない支店数をカウントすることができました。
これは、「ブロック名」のフィルターボタンを使って「九州ブロック」と「関西ブロック」でフィルターをかけた画像です。
関数の計算結果が、フィルター条件に合致していて、かつ重複データを除いた値に変わりました。
複数の関数を組み合わせているため少し難しく感じてしまうかもしれませんが、実際のデータのセル番地に置き換えるだけで重複データを除いたセル数がカウントできるので試してみてください。
エクセルのフィルターで抽出した値のカウントに関するQ&A
- エクセルのフィルターで全データのセルの数をカウントしたい場合はどうしたらいいですか?
-
データに挿入されているすべてのフィルターを解除したあとに、空いているセルに集計方法に「2」または「3」を指定したSUBTOTAL関数を挿入します。
集計方法は、数字のみをカウントしたい場合は「2」を、空白以外のすべてのセルをカウントしたい場合は「3」を指定してください。
フィルターをかけた場合は表示されているセルの数のみがカウントされますが、すべてのフィルターを解除すると全データのセルの数をカウントすることができます。
- エクセルでフィルターをかけたあとのセルをカウントする関数を教えてください。
-
フィルターをかけた後に表示されているセルだけをカウントしたい場合は、SUBTOTAL関数を使います。
SUBTOTAL関数の詳しい使い方は、本文をご覧ください。
- フィルターをかけたあとに重複データを除いたセルをカウントすることはできますか?
-
いくつか方法がありますが、本記事ではIF関数とCOUNTIF関数を組み合わせた方法を紹介しています。
重複データを除いてフィルターをかけた値だけをカウントしたいときはIF関数とCOUNTIF関数を活用するで詳しい手順を解説していますので、参考にしてみてください。
SUBTOTAL関数を使うと値が表示されているセルだけをカウントできる!
数字が入力されているセルや空白以外のセルをカウントしたいときは、COUNT関数またはCOUNTA関数を使用します。
しかし、フィルターをかけた後に表示されているデータだけをカウントしたい場合は、COUNT関数やCOUNTA関数は使えません。
フィルターをかけた後に表示されているセルをカウントしたい場合は、SUBTOTAL関数を使いましょう。
SUBTOTAL関数の集計方法を変えると、数字も空白以外のセルも両方カウントできるので、使い方を覚えておくと便利です。
最後に、フィルターをかけた後のセルの数をカウントする方法をおさらいしておきましょう。
- 設置したデータのフィルターをすべて解除し、カウントした数字が入力できるデータを準備する
- カウントの結果を入力したいセルに、集計方法の引数に「2」または「3」を指定したSUBTOTAL関数を挿入
- 挿入されているフィルターボタンを使って、必要なデータを抽出
COUNT関数やCOUNTA関数は使ったことがあっても、SUBTOTAL関数はあまり使ったことがないという方もいらっしゃるかもしれません。
しかし、フィルターをかけたセルをカウントしたい場合は、COUNT関数やCOUNTA関数は使えないので注意しましょう。
また、今回は重複データを除いたセルをカウントする方法も紹介していますので、ぜひ参考にしてみてください。
フィルターをかけたセルをカウントする方法以外にも、エクセルのフィルターに関する関連記事があります。
こちらの記事もおすすめです。