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