LoginSignup
3
1

More than 3 years have passed since last update.

Excelで重複しないユニーク数カウントをする(SQLのDISTINCTをExcelのCOUNTIF関数で表現)

Last updated at Posted at 2020-06-27

単なるカウントだったら簡単なのですが、Excelでユニーク数をピボットテーブルを使って調べたいときがあります。

※ユニーク数とは、重複しないカウントのことです。ポケモンを1000匹捕まえても、図鑑は151匹って出るじゃないですか(初代GB赤緑の話)ああいう"種類"のカウントのことです。

ユニーク数の意味

例えば売上明細等々のデータがあって、

  • ① 商品ごとに売れた"個数"の集計
  • ② 商品ごとに買った人の"ユニーク人数"の集計

を抽出してください、みたいな仕事があります。

①は売れた数量の単なる合計。②のユニーク人数っていうのは、同じお客さんが同じ商品Aを3回買っていたとしても、商品Aの購入者数を1と数えるってこと。

(ユニーク数を調べることでどれだけ多くのお客さんに人気があるのかが分かります。

1人が10個まとめ買いした場合と、10人が1個ずつ買って行った場合とでは、「10個売れた」結果は同じですけど、人気度って異なりますよね。

その値が次回の商品仕入れや調達で参考にされたり…そんな使い方。)

SQLでユニーク数を集計する

こんな売上明細があるとします。

PRODUCT_ID「0000001」の単なる"購入者数"は5ですが、
CUSTOMER_IDをよく見ると「100010」「100020」「100030」の3名に購入されているので、"購入者ユニーク数"は3です。

WS000000.JPG

SQLでユニーク数集計
SELECT
    PRODUCT_ID,
    SUM(QUANTITY), --①個数
    COUNT(DISTINCT CUSTOMER_ID) --②ユニーク人数
FROM
    URIAGE_MEISAI
GROUP BY
    PRODUCT_ID

Excelでユニーク数を集計する

SQLだったら秒ですが、Excelではちょっと工夫します。作業列(列名:NUM)を作り、集計したい列(CUSTOMER_ID)に対して、COUNTIFした逆数を入れてオートで下まで入力。

WS000001.JPG

Excelでユニーク数集計
=1/COUNTIF(F$2:F$11,F2)

すると、こうなります。

WS000002.JPG

あとは、行に「PRODUCT_ID」・値に「合計/NUM」「合計/QUANTITY」を入れて、ピボットします。

WS000004.JPG

他にやり方が思いつかなかったので、これでSQLの結果と比較してテストしてます。もっと良い方法あったら優しく教えて……

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1