X

データを数える「COUNTIF」関数の基本を覚える

<※本稿の元記事は、『エク達』に掲載した『データを数える「COUNTIF」関数の基本を覚える』という記事です。>本シリーズ『集計を極める』では、エクセルを使用していて集計するテクニックについて、いくつか取り上げていきたいと思っている。本稿で取り上げるのは、「COUNTIF関数」だ。

※本稿の元記事は、『エク達』に掲載した『条件付き集計で計算も楽々!SUMIFの基本を覚える』という記事です。『エクセルの達人(エク達)コンテンツ移管につきまして』でもお伝えしましたが、今後、少しずつ『エク達』側のコンテンツをこちらに転記していきます。基本的にはこれから当面、毎週土日の午後は、『エク達』のコンテンツをこちらに転載していく予定です<文体等については元記事のとおりです>。

条件付き集計で計算も楽々!SUMIFの基本を覚える』では、「エクセル達人」の第一歩である「SUMIF関数」について取り上げた。今後の当シリーズでは、条件付集計など、徐々に高度な集計テクニックを紹介していきたいと考えている。

さて、集計テクニックを極めるに当たり、基礎となる関数がいくつかある。

そのひとつが、「COUNTIF関数」だ。

前回の『条件付き集計で計算も楽々!SUMIFの基本を覚える』で紹介したのが、こんなデータ(図表1)だ。

図表1 新型コロナウイルス感染症用のワクチン接種実績データ

これは、政府CIOポータルサイト『新型コロナワクチンの接種状況(一般接種(高齢者含む))概要』のページで手に入る「ワクチン接種記録システム(VRS)」の生データを加工したものであり、具体的なデータの取得方法や取り出し方については前稿をご参照頂きたい。

(※なお、該当する生データについては、PC環境があることが望ましいが、慣れれば誰にでも簡単に取得できる。)

このワークシートをしげしげと眺めてみよう。

構成要素は「都道府県」(数字2ケタのコード)、「男女の別」(Mが男性、Fが女性、Uが性別不祥)、「年齢」(『-64』が64歳以下、『65-』が65歳以上、『UNK』が年齢不詳)、「回数」はその接種が「1回目」か「2回目か」という区分だ。

前回のシートでは、日付ごとに接種回数を合計する、という作業をやったわけだが、今回は「データの数」そのものを集計する方法を紹介したい。

COUNTIFの具体的な書式は、次のとおり。

COUNTIF(範囲、検索条件)

ここでは「年齢」の部分で集計してみよう。

まずは、「-64」、「65-」、「UNK」の3つの文字列を空白のシートに入力する(図表2)。

図表2 年齢の3区分

次に、B列にデータ数を入力しよう(図表3)。

図表3 計算式の入力

B2セルに次の計算式を入力する。

=countif(Sheet1!C:C, A2)

数式バーを表示している人は、数式バーに数式が表示される(図表4)。

図表4 数式入力中

そして、エンターキーを入力すれば、該当する年齢階層のデータ数が一発で求まる(図表5)。

図表5 データ数の計算

「コントロールキー」を押しながら「D」を入力すれば、下のセルにそのままコピーできる(図表6)。

図表6 Ctrl+D

以上の「COUNTIF関数」は、前回の「SUMIF関数」とあわせて、是非とも業務にご活用いただきたい基本数式のひとつである。

2021/10/17 12:00追記

興味深いもので、『エク達』側に、同サイトが当『新宿会計士の政治経済評論』と同一著者のサイトであると表記をした瞬間、急にアクセスが激増したようです。それまで1日数件もなかったページビュー(PV)がいきなり一千件近くに膨れ上がり、個人的には多少驚いている次第です。

 

新宿会計士:

View Comments (2)

  • これまで条件付きの集計をやるときには、もっぱらDSUMとかDCOUNTとかのデータベース関数を使っていたので、COUNTIFも、前回のSUMIFも存在すら知りませんでした。

    2つ以上の条件を組み合わせたり、ある区間の値に限定して集計をおこなうといった使い方をする場合には、条件を記載したセル範囲が指定できるデータベース関数に頼るしかないと思いますが、条件として単純に数値、あるいは特定のセルの値を指定すれば足りるといった、普通やる集計の場合には、*IF関数の方が便利そうですね。これからは使ってみようと思います。

    データベース関数は、引数の部分が正しく記述されているかどうか、十分吟味しておかないと、とんでもない値を出してくることがありますから。

    • >2つ以上の条件を組み合わせたり
      関数を入れ子にして実現できます。でもエクセル関数だと途端に読みにくくなってすぐバグってしまうので、一旦ワーク用のセルに吐き出して、それを入力範囲にして次の関数に処理させるのが普通かな。