COUNTIFS関数の条件は1つでもOK。OR条件も指定できる
Excelで「条件に一致するデータの個数を数える関数」といえばCOUNTIF(カウント・イフ)関数とCOUNTIFS(カウント・イフ・エス)関数ですが、これらはGoogleスプレッドシートでも利用できます。
条件が1つならCOUNTIF関数、複数条件ならCOUNTIFS関数と使い分けても構いませんが、COUNTIFS関数のみを覚えておいても不都合はありません。
Googleスプレッドシートにおける、COUNTIF関数とCOUNTIFS関数の構文は以下の通りです。
COUNTIF
(範囲, 条件)
- [範囲] ... 検索対象のセル範囲を指定します。
- [条件] ... 検索条件を指定します。
COUNTIFS
(条件範囲1, 条件1, 条件範囲2, 条件2, ...)
- [条件範囲] ... 検索対象のセル範囲を指定します。
- [条件] ... 検索条件を指定します。
COUNTIF関数の引数である[範囲][条件]と、COUNTIFS関数の引数である[条件範囲][条件]は、同じ意味と捉えて問題ありません。
COUNTIFS関数では[条件範囲]と[条件]のセットを複数指定でき、1つのセットを指定したときはCOUNTIF関数と同じ動作になります。
指定した複数の条件は「AかつB」のAND条件となりますが、単純な四則演算を使って「AまたはB」のOR条件を指定することも可能です。例えば、以下のような条件を指定できます。
基本は「AかつB」のAND条件ですが、四則演算で「AまたはB」のOR条件も指定可能です。」
本記事では、活用範囲の広いCOUNTIFS関数の使い方を順番に見ていきましょう。
1つの条件を指定する
まずは、1つの条件のみを指定して男性会員を数えてみます。1つの条件を指定した場合、COUNTIF関数の結果と一致します。例として、関数式は以下になります。
=COUNTIFS(C9:C28, D2)
なお、ここでは条件とする値をセルに入力していますが、数式中に直接指定する場合は「"」(ダブルクォーテーション)で囲むことを覚えておきましょう。
=COUNTIFS(C9:C28, "男")
1COUNTIFS関数を入力する
セルF2に「=COUNTIFS(C9:C28,D2)」と入力します。
2結果が表示された
「男」のみを数えた結果が表示されました。COUNTIF関数を使って「=COUNTIF(C9:C28,D2)」としても結果は同じになります。
2つの条件に一致するデータを数える
ここでは2つの条件として「男性、かつ、来店回数が10回以上」を指定します。COUNTIFS関数の基本的な使い方です。入力する数式は以下の通りです。
=COUNTIFS(C9:C28, D3, E9:E28, E3)
「10回以上」は「>=10」と表します。引数[条件]で利用できる演算子については、本記事末尾のHINTを参照してください。数式に直接指定するときは「"」で囲みます。演算子も含めて囲むことに注意してください。
=COUNTIFS(C9:C28, "男", E9:E28, ">=10")
「男性、かつ、来店回数が10回以上」の条件に一致するデータが数えられました。
範囲内のデータを数える
今度は「来店回数が5回以上、かつ、10回未満」の人を数えます。数式で考えると「10>(来店回数)>=5」となるので、[来店回数]列を対象に、5回以上(>=5)、10回未満(<10)の2つの条件を指定することになります。
=COUNTIFS(E9:E28, D4, E9:E28, E4)
ここでは数値を比較していますが、「COUNTIFS(A:A,"<=yyyy/mm/dd")」のように日付を比較することもできます。
「来店回数が5回以上、かつ、10回未満」の条件に一致するデータが数えられました。
OR条件で数える(条件の重複なし)
「AまたはB」のOR条件を指定します。ここでは「来店回数が3回以下、または、10回以上」の条件を指定します。3回以下は「"<=3"」、10回以上は「">=10"」です。
ただし、この2つの範囲は重ならないため、単純に複数条件を指定すると、結果は「0」になってしまいます。このようなときは、COUNTIFSの数式を2つ用意して結果を足し合わせます。
=COUNTIFS(E9:E28, D5) + COUNTIFS(E9:E28, E5)
「来店回数が3回以下、または、10回以上」の条件に一致するデータが数えられました。
フィルターの結果と比較して結果を確認してみましょう。
[来店回数]列で「2」「3」にチェックを付けます。
同様に「10」「11」「13」にチェックを付けて、[OK]をクリックします。
フィルターしたデータを選択して、件数を確認すると「13」となりました。COUNTIFS関数で数えた件数と一致していますね。
OR条件で数える(条件の重複あり)
OR条件で指定する「重複あり」の条件を考えてみましょう。条件は「新宿店の会員、または、来店回数が5回以上」です。先ほどと同じように2つの関数式を考えると、
=COUNTIFS(D9:D28, D6) + COUNTIFS(E9:E28, E6)
となりますが、このままでは「新宿店の会員、かつ、5回以上来店」の人を2回数えてしまいます。
セルF6に「=COUNTIFS(D9:D28,D6)+COUNTIFS(E9:E28,E6)」と入力した結果です。結果は「14」となりました。
フィルターをかけて確認してみましょう。まずは「新宿店の会員」です。
[店舗]列で「新宿」を抽出しました。結果は7人です。5回以上来店が3人いますね。
続けて「5回以上来店」のフィルター結果です。
[来店回数]列で「5以上」を抽出しました。結果は7人です。新宿店の会員が3人います。
「新宿店」の抽出結果7人と「5回以上」の抽出結果7人を単純に足すと、「新宿店の会員、かつ、5回以上来店」の3人がダブっています。「新宿店の会員、かつ、5回以上来店」を求めて、最初の関数式から引きましょう。
=COUNTIFS(D9:D28, D6) + COUNTIFS(E9:E28, E6) - COUNTIFS(D9:D28, D6, E9:E28, E6)
セルF6の数式を修正した結果です。正しく11人となりました。
COUNTIFS関数では「AかつB」のAND条件の指定以外に、四則演算で「AまたはB」のOR条件が指定できることをおくと便利です。また、前述の通り、1つの条件を指定したときはCOUNTIF関数と同じ動作になります。
HINT引数[条件]に使える比較演算子
引数[条件]に使える比較演算子をまとめました。数式で指定するときは、条件に指定する値と一緒に「"」(ダブルクォーテーション)で囲みます。
引数[条件]に使える比較演算子
演算子 | 名称 | 使用例 | 結果 |
---|---|---|---|
= | 等しい | =5 | 5と等しい | <> | 等しくない | <>渋谷 | 渋谷に等しくない |
> | より大きい | >5 | 5より大きい |
< | より小さい | <5 | 5より小さい |
>= | 以上 | >=5 | 5以上 | <= | 以下 | <=5 | 5以下 |
また、条件にワイルドカードを指定すると「あいまい検索」も可能です。ワイルドカード自体を検索したいときは、「*」や「?」を「~」で挟んで、「"~?~"」と指定してください。
引数[条件]に使えるワイルドカード
ワイルドカード | 意味 | 使用例 | 結果の例 |
---|---|---|---|
* | 任意の文字列 | 新* | 新宿、新橋、新大久保 |
? | 任意の1文字 | ?田 | 新田、本田、行田 |