うちの教室の生徒さんから、エクセルの関数について、以下のようなご質問をいただきました。

「お客様名簿があるのですが、そのデータ上にお客様名が複数でてきています。そのデータ上のお客様の数を、カウントするにはどの関数を使うのが良いでしょうか?」帰り際のご質問だったので、来週の授業の際に返答をするのですが、データの重複の対処方法は面白い課題かと考えたので、その生徒さんへの回答としてベストと考える方法をご紹介したいと思います。

重複データのイメージは以下のようなリストで、一人の顧客に対して複数の契約が存在している。 そのデータの中からDM発送の処理をするために、顧客数をカウントしたいという内容だと認識しています。

マナカル先生マナカル先生

どんな方法が良いでしょうか?

このリストの右横(D列)に顧客毎の契約数を記載するセルを設けます。 ここにCOUNTIF関数で、それぞれの顧客名がいくつ存在するかをカウントするようにします。

 

D3にCOUNTIF関数を以下の条件にて設定

範囲 : B$3:B3 ($B3B:B3としてもこの場合は問題ないです)

検索条件: B3

これをD14までコピーすると、以下リストのD列にあるように、それぞれの顧客数がカウント表示されます

B3~B3の間に江原さんの名前(B3)はいくつあるか? -> 当然1つですね

B3~B4の間に安藤さんの名前(B4)はいくつあるか? ー> これも1つです。

B3~B5の間に小山さんの名前(B5)はいくつあるか? -> これも1つです。

少し飛ばして、B3~B7の間に小山さんの名前(B7)はいくつあるか? -> 2となっています。

B3~B11の間に小山さんの名前(B11)はいくつあるか? -> 3になっていますね。

 

それぞれの名前に対して、1から存在する数(この例だとMaxで3です)の番号が振られることになります。

ここまできたら、上図の青い〇で囲んであるところに、COUNTIF関数で1の数字を数える関数をいれると、顧客数がでてきますよね

COUNTIF関数で数えた名前の数を逆数(3だったら3.3333、2だったら0.5)にして表記して、SUM関数で足す、あるいは、SUMPRODUCT関数を使う方法などもありますが、上記の方法がシンプルで使い易いと考え、来週の授業の際にはこの方法をお伝えしようと思います。