manase's blog

ビジネスのためのエクセル集計・分析など

Countifsについて

Countifs関数は複数の条件に当てはまる対象の個数(カウント)となります。Sumifs関数とは違い、Countifsは数を数えているだけですので、当然ながら引数の中に集計列はありません。Sumifs関数と同様に、一つの条件のみを扱うCountif関数は使う意味はありません。条件の数によらず、常にCountifsを使えばいいのです。

 

=COUNTIFS(検索範囲1, 検索値1, 検索範囲2, 検索値2, …)

 

以前にも言及したのですが、データの集計や分析をする上で、常に複数の条件によるデータの切り分けを意識していることが大切です。その意味でも集計・分析をする際には、とりあえず何も疑わずに、Sumifs関数およびCountifs関数を用いてクロス集計を行う習慣を身につけてみましょう。

 

しかし、経理・財務における集計において、多くの場合において集計対象の単位は「金額」です。「売上」や「支出」の小計が切り分けによってどのように異なるのか、ということが関心となることがほとんどでしょう。そのような理由で、Sumifsはよく使うけれども、Countifsはそうでもない、という方をよく目にします。

確かに、業務内容によっては「条件に合った対象を数える」という行為は、あまり意味がないのかもしれません。例えば「月ごとの売上小計を支店ごとに集計する」「カテゴリーごとの商品の売上小計を年代ごとに集計する」というようなケースでは、Countifs関数の出番は全くありません。ただしそのような単純な金額の集計から、何かしらのストーリーにたどり着くことは難しいでしょう。上記の例では、「特定の支店・商品の売上が増えている、または減っている」というような事象は確認できますが、その背景に「何が起きているのか?(WHAT)」ということを知ることはできないからです。「何が」が分からなければ、より大切な「なぜ?(WHY)」を確認することは当然できません。

Whatとして捉えたい数字の例は、「支店ごとの新規の顧客の数」、「支店ごとで今期から購入がなくなった顧客の数」、「〇〇円以上の購入があった顧客の数」、「地区ごとで売上が増加・減少した支店の数」、「商品ごとの、値下げする前・後の販売数」、「商品ごとの、商品Aと一緒に購入された回数」、などです。対象が「顧客」、「商品」、「支店」などとなるので、起きている現象をより明確に把握することができます。よりマネージャー視点の見方ができるといっても良いかもしれません。

ですので、「Sumifsを使う機会がある場合には、いつもCountifsも使って何かしてみる」ことをお勧めしたいと思います。依頼されている業務とは一見関係がないように見えるとしても、です。多くの場合、金額だけでは見えない動きや傾向を捉えることができます。

 

例として、上記で言及した「支店ごとで今期から購入がなくなった顧客の数」を計算してみます。仮に、以下のようなデータ(Raw Data)があるとしましょう。

f:id:manaseee:20180225232150j:plain

このRaw Dataをピボットテーブル、もしくはデータリボンの「重複の削除」機能を使って(個人的には後者をお勧め)、「顧客IDと支店IDの組み合わせ」のユニークリストのテーブルを作成します。

f:id:manaseee:20180225233415j:plain

この新しいテーブルに前期と今期の売上の列を追加します。仮に前期を2016年とし、今期を2017年とするならば、Sumifs関数を使い、条件に顧客IDと支店ID、更に年(2016年、または2017年)を指定します。このテーブルをテーブル1と呼ぶことにしましょう。

(Raw Dataに「年」というフィールドがないので、事前にそのような列をRaw Dataに追加してもいいですし、もしくはSumifs関数の条件に〇〇年1月1日以降、かつ〇〇年12月31日以前、というように条件を指定しても大丈夫です。ちなみに、ピボットテーブルを使えば、もちろんこの作業はもっと簡単に行えますが、空欄ができてしまうなど後々不都合が生じます。)

f:id:manaseee:20180225234829j:plain

最後に「支店ID」のユニークリストテーブルを別に用意します。こちらをテーブル2と呼ぶことにしましょう。これで準備が整いました。

f:id:manaseee:20180301215349j:plain

ここで、テーブル2に列を追加し、Countifs関数を使って以下のような条件を指定します。

条件1:支店ID

条件2:2016年に売上がある (>0)

条件3:2017年に売上がない (=0)

 

f:id:manaseee:20180301220911j:plain

これで、先に掲げた目的は達成できました。もう少し踏み込んだ集計をするとすれば、同じ要領で「2017年の新しい顧客」も追加して、2016年から2017年の顧客数の変化を説明してみましょう。関数の中の条件は以下の通りです。

条件1:支店ID

条件2:2016年に売上がない (=0)

条件3:2017年に売上がある (>0)

 

2016年と2017年の顧客数をそれぞれ追加すると、支店ごとの顧客数の増減の詳細を確認することができます。

f:id:manaseee:20180301222608j:plain

つまり「2016年の顧客数 - 離れていった顧客数 + 新しい顧客数 = 2017年の顧客数」の動きを各支店ごとに集計できたことになります。割合を計算すれば、「リピート率・定着率」などを比べることもできますし、支店の規模に対する新規の顧客数の比較もできるかもしれません。単純に「顧客が増えた・減った」ではなくて、その内訳を見ることによって各支店の強みや課題が見えてきます。ここでは支店ごとの比較を示しましたが、もちろん商品やその他の変数で置き換えても同じような比較を行うことができます。

 

全く難しい技術を必要とせずに、何かしらの洞察に繋がる可能性を持っているのがCountifs関数です。もちろん、これらの集計だけでは問題の根底にたどり着くことは決してないでしょう。しかし、その糸口を見つける第一歩となり得ます。

データを見る際にまず考慮すべきことは、意義のある比較ができるようにデータを切り分ける、ということです。そのような意味においても、Countifsの重要性を感じていただけるのではないかと思います。