\PDFの表をエクセルに変換する方法/

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

紬ちゃん

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

ライクさん

SUBTOTAL関数を使えば、フィルターをかけた後のセルの数だけをカウントできるよ。

通常、セルの数をカウントしたい場合、セルに入力されている値が数字なのか文字なのかによって使用する関数が変わります。

しかし、フィルターをかけたときは、値が数字であっても文字であってもSUBTOTAL関数でカウントすることができます。

SUBTOTAL関数を使ってフィルターをかけたセルをカウントする簡単ステップ
  1. 設置したフィルターをすべて解除し、カウントした数字が入力できるデータを準備する
  2. カウントした数字を入力したいセルにSUBTOTAL関数を挿入
  3. 挿入されているフィルターボタンを使って、必要なデータを抽出

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関数を使用します。
集計方法の1桁と3桁の違いは、こちらで詳しく解説していますので参考にしてみてください。

SUBTOTAL関数を使ってフィルターで抽出した値をカウントする手順

SUBTOTAL関数を使って、フィルターで抽出したセルだけをカウントする手順を紹介します。

今回は、文字が入力されているセルをカウントする手順で解説しています。
数字が入力されているセルだけをカウントしたい場合は、集計方法の引数を「2-COUNT」に変更してください。

STEP
フィルターを挿入したデータとカウント結果を入力するセルを準備する
必要なデータを作成
必要なデータを作成

フィルターを挿入したデータとカウントした結果を入力するセルを準備します。

STEP
SUBTOTAL関数を選択
SUBTOTAL関数を選択
SUBTOTAL関数を選択
  • セルの数をカウントした結果を表示したいセルをクリックして「=su」と入力
  • 表示された関数名の中にある「SUBTOTAL」をダブルクリックする
STEP
SUBTOTAL関数の「集計方法」を選択
COUNTAを選択する
COUNTAを選択する

「集計方法」に入力する関数名が表示されるので、「3-COUNTA」をダブルクリックしてください。

STEP
「範囲」を入力してEnterで関数を確定
「範囲」を入力して関数を確定
「範囲」を入力して関数を確定
  • 「,(カンマ)」を入力
  • カウントしたいセル範囲をドラッグ
  • 「)」を入力
  • Enterで確定する
=SUBTOTAL(3,A2:A6)
STEP
フィルターをかける前のセルの数が表示される
フィルターをかける前のセルの数が表示された
フィルターをかける前のセルの数が表示された

フィルターをかける前のセルの数が表示されました。

STEP
フィルターをかけて必要なデータを抽出
「みかん」だけにチェックを入れる
「みかん」だけにチェックを入れる
  • フィルターボタンを押す
  • (すべて選択)のチェックボックスをクリックして、すべてのチェックを解除する
  • 「みかん」にチェックを入れる
  • 「OK」を押す
STEP
フィルターをかけたセルの数が表示された
フィルターをかけたあとのセルの数が表示された
フィルターをかけたあとのセルの数が表示された

関数の結果が変わり、フィルターをかけた後のセルの数を表示することができました。

エクセルのSUBTOTAL関数とCOUNT関数・COUNTA関数の違いと使い分け

紬ちゃん

セルの数を数えたいときは、COUNT関数やCOUNTA関数に加えてSUBTOTAL関数も使えるってことですよね?違いと使い分け方がよくわからないので、教えてください。

ライクさん

セルの数を正しくカウントするために、この3つの関数の違いと使い分け方を教えるね。

フィルターをかけた後のセルの数だけではなく、データが入力されているセルの数をカウントしたいケースは意外と多いですよね。

セルの数を正しくカウントするために、この3つの関数の違いをしっかり覚えておきましょう。

SUBTOTAL関数

SUBTOTAL関数は、フィルターをかけた後のセルの数を数えたいときに便利な関数です。

前述で紹介したように、フィルターをかけなければすべてのセルの数をカウントすることも可能です。

ライクさん

SUBTOTAL関数のメリットは他にもあるよ!

集計方法を変えると、数値が入力されているセルも文字が入力されているセルも両方カウントすることが可能です。

また、カウント以外にも平均や最大値、最小値などを求めることができるので覚えておくと便利です。

COUNT関数

COUNT関数は、数値が入力されているセルだけをカウントしたいときに使用する関数です。

COUNT関数
COUNT関数

フィルターを設定していない場合や、同じ列に数字と文字が混在しているデータから数字が入力されているセルだけをカウントしたい場合は、COUNT関数を使います。

ただし、フィルターをかけた値だけをカウントしたい場合、COUNT関数は使用できないので注意してください。

COUNTA関数

COUNTA関数は、空白以外のセル、つまり数字・文字・記号など何らかのデータが入力されているセルをカウントしたいときに使用する関数です。

COUNTA関数
COUNTA関数

上記のように、空白以外の数字・文字・記号が入力されているセルをカウントすることができます。

ただし、数字と文字が混在していた場合、数字だけまたは文字だけのように分けてカウントすることはできません。

COUNTA関数もCOUNT関数と同様で、フィルターをかけた後に表示されているセルだけをカウントすることはできないので注意しましょう。

重複データを除いてフィルターをかけた値だけをカウントしたいときはIF関数とCOUNTIF関数を活用する

紬ちゃん

完全に内容が一致している重複データがあるデータにフィルターをかけて、重複データを除いたセルの数をカウントしたいんですけど、どうしたらいいですか?

ライクさん

Office365またはExcel2021以降のバージョンを使っている場合は、UNIQUE関数を使う方法もあるんだけど、エクセルのバージョンに関係なく操作できるIF関数とCOUNTIF関数を活用した方法を紹介するね。

UNIQUE(ユニーク)関数とは、Office365またはExcel2021以降のバージョンで使用できる関数で、重複のないデータが簡単に抽出できる関数です。

UNIQUE関数
UNIQUE関数

これは、UNIQUE関数を使って重複データを除いた画像です。

Office365またはExcel2021以降のエクセルを使用している場合は、重複データを取り除ける便利な関数ですが、それ以外のエクセルを使用している場合はこの関数は使用できません。

UNIQUE関数はエクセルのバージョンによっては使用できないケースがあるため、今回はIF関数とCOUNTIF関数を組み合わせた方法を紹介します。

フィルターをかけて重複データを除いたセルをカウントする
フィルターをかけて重複データを除いたセルをカウントする

この画像の表のデータは、同じ色で塗りつぶされているものがすべて重複しています。

このデータのブロック名でフィルターをかけ、重複データを除いた支店数をカウントしてみましょう。

こちらの方法は作業用の列を作成して操作を行うため、それぞれの作業手順を分けて解説しています。
下記の見出しの手順をすべて行うことで、重複データを除き、フィルター後のセルの数をカウントすることができます。

データを結合する

はじめに、「ブロック名」と「支店名」を組み合わせたデータの中に重複するデータがあるかを確認するために、データの結合を行います。

ライクさん

これは、ブロック名が同じでも支店が違う場合は、別のデータだと認識させるために必要になる操作だよ。

STEP
ブロック名と支店のデータを連結
「ブロック名」と「支店」のデータを連結
「ブロック名」と「支店」のデータを連結

Eの3に「=IF(B3="","",B3&"/"&C3)」を挿入して、「ブロック名」と「支店」のデータを連結します。

計算式を挿入したら、Enterで数式を確定してください。

=IF(B3="","",B3&"/"&C3)

今回は、ブロック名に空白のセルがあることを想定して上記のIF関数を挿入していますが、空白がない場合は以下の計算式を挿入してもかまいません。

=B3&"/"&C3
STEP
挿入した計算式をコピーする
計算式をコピーする
計算式をコピーする

挿入した計算式をコピーしてください。

STEP
すべての「ブロック名」と「支店」のデータが連結された
すべてのデータが連結された
すべてのデータが連結された

すべてのデータを連結することができました。

IF関数とCOUNTIF関数を使って1度だけ出てきたデータを調べる

連結したデータには重複したデータが含まれているため、IF関数とCOUNTIF関数を使って1度だけ出てきたデータを調べましょう。

STEP
IF関数・COUNTIF関数・MAX関数を組み合わせた数式を挿入
IF関数・COUNTIF関数・MAX関数を組み合わせた数式を挿入
IF関数・COUNTIF関数・MAX関数を組み合わせた数式を挿入

「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を足した値を返す。重複している場合は空白を返す。」という意味の計算式です。

STEP
計算式をコピーする
計算式をコピーする
計算式をコピーする

「Fの3」のセルをクリックしなおして、計算式をコピーしましょう。

STEP
重複していないデータに番号が表示された
重複していないデータに番号が表示された
重複していないデータに番号が表示された

重複していないデータだけに番号が表示されました。

SUBTOTAL関数を使って重複していないセルの数をカウントする

先ほど表示した番号を使って、重複していないセルの数をカウントするためのSUBTOTAL関数を挿入します。

STEP
カウントした数字を表示するセルを選択
カウントした数字を表示したいセルを選択
カウントした数字を表示したいセルを選択

「Dの1」のセルをクリックします。

STEP
SUBTOTAL関数を挿入
SUBTOTAL関数を挿入
SUBTOTAL関数を挿入

選択したセルに「=SUBTOTAL(2,F:F)」と入力し、Enterで確定してください。

=SUBTOTAL(2,F:F)

補足説明

SUBTOTAL関数の集計方法の「2」は、数字が挿入されているセルの数をカウントします。

引数の範囲を「F:F」のように指定すると、F列のすべての範囲を指定できます。

STEP
フィルターをかける前のデータが重複していない支店数をカウントできた
フィルター前の重複していない支店数が表示された
フィルター前の重複していない支店数が表示された

フィルターをかける前の重複していない支店数をカウントすることができました。

STEP
フィルターをかけて必要なデータを抽出する
フィルター後の重複なしのセル数が表示された
フィルター後の重複なしのセル数が表示された

これは、「ブロック名」のフィルターボタンを使って「九州ブロック」と「関西ブロック」でフィルターをかけた画像です。

関数の計算結果が、フィルター条件に合致していて、かつ重複データを除いた値に変わりました。

複数の関数を組み合わせているため少し難しく感じてしまうかもしれませんが、実際のデータのセル番地に置き換えるだけで重複データを除いたセル数がカウントできるので試してみてください。

エクセルのフィルターで抽出した値のカウントに関するQ&A

エクセルのフィルターで全データのセルの数をカウントしたい場合はどうしたらいいですか?

データに挿入されているすべてのフィルターを解除したあとに、空いているセルに集計方法に「2」または「3」を指定したSUBTOTAL関数を挿入します。

集計方法は、数字のみをカウントしたい場合は「2」を、空白以外のすべてのセルをカウントしたい場合は「3」を指定してください。

フィルターをかけた場合は表示されているセルの数のみがカウントされますが、すべてのフィルターを解除すると全データのセルの数をカウントすることができます。

エクセルでフィルターをかけたあとのセルをカウントする関数を教えてください。

フィルターをかけた後に表示されているセルだけをカウントしたい場合は、SUBTOTAL関数を使います。

SUBTOTAL関数の詳しい使い方は、本文をご覧ください。

フィルターをかけたあとに重複データを除いたセルをカウントすることはできますか?

いくつか方法がありますが、本記事ではIF関数とCOUNTIF関数を組み合わせた方法を紹介しています。

重複データを除いてフィルターをかけた値だけをカウントしたいときはIF関数とCOUNTIF関数を活用するで詳しい手順を解説していますので、参考にしてみてください。

SUBTOTAL関数を使うと値が表示されているセルだけをカウントできる!

数字が入力されているセルや空白以外のセルをカウントしたいときは、COUNT関数またはCOUNTA関数を使用します。

しかし、フィルターをかけた後に表示されているデータだけをカウントしたい場合は、COUNT関数やCOUNTA関数は使えません。

フィルターをかけた後に表示されているセルをカウントしたい場合は、SUBTOTAL関数を使いましょう。

SUBTOTAL関数の集計方法を変えると、数字も空白以外のセルも両方カウントできるので、使い方を覚えておくと便利です。

最後に、フィルターをかけた後のセルの数をカウントする方法をおさらいしておきましょう。

おさらい
  1. 設置したデータのフィルターをすべて解除し、カウントした数字が入力できるデータを準備する
  2. カウントの結果を入力したいセルに、集計方法の引数に「2」または「3」を指定したSUBTOTAL関数を挿入
  3. 挿入されているフィルターボタンを使って、必要なデータを抽出

COUNT関数やCOUNTA関数は使ったことがあっても、SUBTOTAL関数はあまり使ったことがないという方もいらっしゃるかもしれません。

しかし、フィルターをかけたセルをカウントしたい場合は、COUNT関数やCOUNTA関数は使えないので注意しましょう。

また、今回は重複データを除いたセルをカウントする方法も紹介していますので、ぜひ参考にしてみてください。

フィルターをかけたセルをカウントする方法以外にも、エクセルのフィルターに関する関連記事があります。

こちらの記事もおすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
目次