だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

Excel 空白を含むセル範囲から重複を除いたデータ数をカウントする方法

通常、エクセルでは、COUNT系の関数でデータ数を簡単にカウントできますが、重複を除く場合、それから空白あるセル範囲に対して重複を除く場合においては、少し工夫が必要です。

以下、具体例と一緒に紹介しますので、参考にしてください。

エクセルでデータ数をカウントする方法

通常はCOUNTA関数

COUNTA関数を使えば、そのセル範囲内におけるデータの個数を求められますが、しかし、重複の判定ができないため、これだけだとダメなケースも多いです。

重複なしカウントは「SUMPRODUCT&COUNTIF」でOK

SUMPRODUCT関数は、「1/COUNTIF」を引数にすることで、重複を除いた件数を算出できます。

=SUMPRODUCT(1/COUNTIF(A2:A13,A2:A13))

しかし、この式では、セル範囲内に空白があると「#DIV/0!」エラーが返ってきてしまいます。

=SUMPRODUCT(1/COUNTIF(A2:A16,A2:A16))
'セル範囲内に空白があるとカウントできない

セル範囲に空白があっても重複なしカウントする式

SUMPRODUCTとCOUNTIFを使って、下記のように書けばOKです。

=SUMPRODUCT((A2:A20<>"")/COUNTIF(A2:A20,A2:A20&""))
'セル範囲内に空白があってもOK。重複も除外する。

ちなみに、重複がなければ、COUNTBLANK関数でいけます。

どうして、そうなるの?

SUMPRODUCTとCOUNTIFで重複を数えられる理由はこちらの記事に書かれていました。

SUMPRODUCTとCOUNTIFは、数学的な知識がないと理解が難しいので、ひとまず実務面では、この式を使えばOKと覚えておくと幸せそうです。

スプレッドシートやoffice365ならUNIQUE関数も使える

UNIQUE関数は引数に指定したセル範囲の内容について、重複を除いたリストを返却します。

なので、カウントするなら、COUNTAの引数にUNIQUE関数式を入れ込むことで、重複なしデータ件数を一発で算出できます。

=COUNTA(UNIQUE(A1:A10))

これは通常のエクセルにも早く実装してほしいところですが、未だないのは、なにかしら過去の仕様とバッティングしちゃうんでしょうかね。残念です。

ページ上部に戻る