Excel のデータ個数集計方法を全パターン紹介!重複除外やLike検索も!

Excelで関数を使ってデータが入力されているセルの個数を数える方法を説明します。


データの個数を数えるには

データの個数を数える関数は5つあります。
それぞれ特性がありますので、順に説明をします。

セルの個数を数える関数一覧

Excelのセルの個数を数える関数は以下の通りです。

=COUNT(セル範囲)
範囲の中で、数値データが入力されているセルの個数を数えます。
数値データは数値、日付が対象となります。エラー値、論理値(True・False)は対象外となります。

=COUNTA(セル範囲)
範囲の中で、文字や数値、式などデータが入力されているセルの個数を数えます。

=COUNTIF(範囲,検索条件)
検索条件にあった値を「範囲」の中からみつけ、それに対応するセルの個数を数えます。

=COUNTIFS(範囲,検索条件,検索条件)
複数検索条件にあった値を「範囲」の中からみつけ、それに対応するセルの個数を数えます。

=SUMPRODUCT(配列1,配列2)
対応する範囲または配列の積の合計を返します。
数値データ以外は0であると見なされます。


各関数の使用方法

各関数をサンプルデータを例に説明をします。

COUNT関数

=COUNT(セル範囲)
範囲の中で、数値データが入力されているセルの個数を数えますので、セルの値に数値が入っていなければなりません。
なお、数値データは数値、日付が対象となります。0でも一件としてカウントされます。

サンプルでは、「商品コード」、「在庫数」、「担当者」の表があり、それぞれ値が入っています。
今回は「在庫のある商品コード」をCOUNT関数でカウントしたいと思います。

「在庫数」はセル範囲(B2:B15)ですので以下のようにします。

=COUNT(B2:B15)

表示された結果をみると14件となります。

しかし在庫0件となっている2件は除外したいので実際は12件としたいところです。

これは上記の通り0でも1件としてカウントされている仕様ですので、使用の際は注意したいところですね。

12件の訂正版についてはCOUNTIFS関数のところで説明をします。

COUNTA関数

=COUNTA(セル範囲)
COUNT関数は数値だけのカウントでしたが、COUNTA関数は文字や数値、式などデータが入力されているセルの個数を数えることができます。

サンプルでは、商品コード数をCOUNTA関数でカウントしたいと思います。

「商品コード」に値が存在すれば1カウントしたいので、セル範囲(A2:A15)を集計対象にします。

=COUNTA(A2:A15)

表示された結果をみると14件となり、正しく表示されましたね。

COUNTIF関数

=COUNTIF(範囲,検索条件)
COUNT関数、COUNTA関数は集計のみの機能ですが、COUNTIF関数はそれに検索条件を一つ加えたものになります。

サンプルでは、COUNT関数で求め、誤りがあった「在庫のある商品コード数」をCOUNTIF関数で条件を加え訂正したいと思います。

セル範囲(A2:A15)は変わりませんので、そのまま入力します。
条件は1件以上在庫があればカウントしたいので”>0″を設定します。

=COUNTIF(B2:B15,”>0″)

表示された結果12件となり、正しく表示されましたね。

COUNTIFS関数

=COUNTIFS(範囲,検索条件,検索条件)
COUNTIF関数は一つしか検索条件の設定ができませんでしたが、COUNTIFS関数を使用すれば2個以上の検索条件の設定ができます。

サンプルでは、「田中B担当で在庫がある商品コード数」をCOUNTIFS関数でカウントしたいと思います。

「担当者」が田中Bですので、一つ目の条件は”=田中B”となります。検索範囲は「担当者」なので(C2:C15)となります。

次に「在庫がある商品コード数」を求めるので、COUNTIF関数のサンプルと同様に0件は除外となるよう”>0″を設定します。検索範囲は(B2:B15)です。

=COUNTIFS(C2:C15,”=田中B”,B2:B15,”>0″)

表示された結果12件となり、正しく表示されましたね。

 

SUMPRODUCT関数

=SUMPRODUCT(配列1,配列2)

SUMPRODUCT関数は
対応する範囲または配列の積の合計を返します。
数値データ以外は0であると見なされますので文字列を含む場合は利用できません。

サンプルでは「担当者」に入力された値から重複分を除いた人数を求めたいと思います。

入力する式は以下となります。
=SUMPRODUCT(1/COUNTIF(C2:C16,C2:C16))

まず、「1/COUNTIF」を使うことの説明ですが、
例えば、”山田B”が何人いるかを求めるとき(当然一人です。)
“山田B”のレコード数を求めるには、
=COUNTIF(C2:C16,C13)
となります。合計は4件ですね。

これを「1」で割ると「1/4=0.25」となります。

SUMPRODUCTは配列の積の合計を返しますので、COUNTIFの配列数が4個なので「0.25*4」となり「1」となるわけです。

次に、その列すべての値を抽出対象とにしたいわけですから、
=COUNTIF(C2:C16,C2:C16)
とします。

その結果「3」となり、「1」で割ると「1/3=0.33333」となります。

次にCOUNTIFの配列数が15個となるので、「0.25*15」で「5」となり、5人であるということがわかります。

 

条件式LIKEのように特定の文字を含むセルをカウントする

COUNTIF、COUNTIFS関数の条件は完全一致として機能します。
例えば、A列に「案件①」と入力されたセルが複数あり、それらをカウントする場合は、

=COUNTIF(A:A,”案件①”)

となります。

しかし、A列に「案件①」以外に「案件①-1」や「案件②」、「案件③」など「案件」の種類が複数あり、案件の総数をカウントする場合には複数の条件設定を行わなければなりません。

式は以下のようになります。
かなり面倒ですね。

=COUNTIF(A:A,”案件①”) + COUNTIF(A:A,”案件②”) + COUNTIF(A:A,”案件③”)

そこで正規表現といわれる「?」と「*」の出番となります。

「?」は任意の1文字、ワイルドカード「*」は任意の複数の文字の意味となります。

これを条件となる値の前後に入れることで部分一致の条件として機能します。

■任意の1文字が含まれる場合は「?」を利用します。

  • 条件が一つの場合: =COUNTIF(<セル範囲>,”○○○?”)
  • 条件が複数の場合: =COUNTIFS(<セル範囲>,”○○○?”,<セル範囲>,”□□□?”)

■複数文字が含まれる場合はワイルドカード「*」を利用します。

  • 条件が一つの場合: =COUNTIF(<セル範囲>,”○○○*”)
  • 条件が複数の場合: =COUNTIFS(<セル範囲>,”○○○*”,<セル範囲>,”□□□*”)

上記の例で「*」を使うと

=COUNTIF(A:A,”案件*”)

だけで済むようになります。
かなりすっきりしましたね。



使用方法

サンプルは案件管理表となります。
B列の案件毎の進捗状況について確認をするため、「対応中」および「完了」の件数をカウントします。
なお、「対応中」の前方にチーム名が記載されているため、「対応中」だけではカウントできず困っている状態であることとします。(実際現場で発生した事例です…)

 

G1セルに「案件①」の「対応中」件数をカウントする式を入力します。「〇〇〇チーム対応中」の「〇〇〇チーム」部分を「*」に置き換えます。

カウントできましたね。
次に完了の件数をカウントする式を入力します。
こちらは完全一致ですので、「*」は利用しません。

 

「案件②」については「案件①の式をコピペし、「案件①」のところを「案件②」にします。

はい!完成です!
カンタンですね!

ついでに各案件ごとの総件数もカウントしましょう。

さいごに

いかがでしょうか。

シンプルに使える、COUNT、COUNTA、COUNTIF関数、複雑な条件をこなせるCOUNTIFS関数、そして計算内容は複雑であるが、重複排除を一式で実現できるSUMPRODUCT関数。

そして、Like検索のように条件を指定できる正規表現を利用した方法を説明しました。

データの個数カウント方法に利用できる関数や使用方法はたくさんありますので、利用シーンに応じて適正かつ一番シンプルな式で実現できる関数を選んだ方がよいかもしれません。

ぜひ活用してみてください。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です