重複しないデータ件数のカウント


先日セミナーで質問されたので、こちらにも書いておきます。

上図のようなデータがあったとします。説明するまでもありませんが、名前の総数は 5 件ですが、"田中"と"鈴木"が重複していますので、重複しない名前は、"田中"、"鈴木"、"菊池"の 3 件ですね。この 3 件を関数で調べたいということです。

参考までに、名前の総数はCOUNTA関数で分かりますし、

"田中"の件数でしたら、COUNTIF関数だけで一発です。

さあ、重複しない名前の件数を調べるには、どうしたらいいでしょう。こんなときは、次のように考えます。分かりやすく2行目の"鈴木"からやってみましょう。先頭の"田中"は、後で考えます。

まず、データの先頭であるセルA2から、調べたい最初の"鈴木"が入力されているセルA3までの間に、"鈴木"が何件あるか調べます。

では次に、セルA4の"鈴木"で考えてみましょう。このときも、探す範囲は、データの先頭であるセルA2から、探す"鈴木"が入力されているセルA4までの間です。

同様に、今度はセルA5の"田中"を調べます。

せっかくですから、最後のセルA6"菊池"も、やってみましょう。

ここまでのCOUNTIF関数は、次のような仕組みになっています。

もちろん、この考え方はセルA2の"田中"でも、まったく同じことです。

では、これらの数式をB列に入力してみましょう。まず、セルB2に「=COUNTIF(A2:A2,A2)」と入力します。

この数式を、セルB6までコピーします。

おや?結果が変ですね。試しに、セルB6にコピーされた数式を見てみると、

これはいけません。コピーされた数式は「=COUNTIF(A6:A6,A6)」ですが、調べる先頭のセルA2は固定されていなければいけないんですね。こんなときは、絶対参照を使います。セルB2の数式を次のように変更します。

今度は、数式をコピーすると望む結果になりました。参考までに、C列に数式を表示しておきます。

さあ、準備は完了です。ここで入力したCOUNTIF関数の結果を、よく考えてください。COUNTIF関数の結果が 1 ということは、その名前は、そこまでの間で、初めて登場したということです。したがって、COUNTIF関数で調べたB列の中で 1 の個数が、重複しない名前の個数ということになります。