カウントはCOUNTIFSだけ?Excel複数条件の関数別6選

カウントはCOUNTIFSだけ?Excel複数条件の関数別6選 Excel

本記事では、Excel 2021を使用して検証および画像の作成を行っています。

Excelで、「特定の条件に合うデータがいくつあるか数えたい!」

これ、実務でも本当によく使う作業ですよね!

例えば、「東京都出身の女性は何人いる?」とか、
「〇〇部門の契約件数は?」など。

「そんなの、COUNTIFS関数を使えば一発じゃない?」

そう思ったあなた、大正解!

通常、複数の条件でデータを数えたいときは、
COUNTIFS関数が最もシンプルで分かりやすい方法です。

でも…!

もし、何かの理由でCOUNTIFS関数が使えなかったら?(Excel 2003 以前など)

あるいは、もっと他の関数の組み合わせでも同じことができるって知ってましたか?

さて、今回の記事の目的は、まさにそこ!

実務では「絶対に使わない!」と思われるような方法も含め、
さまざまな関数を使ったカウント方法を知ることが目的です。

これにより、数式の組み立て方関数の特徴についての理解を深めることができます。

「一つのやり方だけじゃなく、色々なアプローチを知っておきたい!」

そんな知的好奇心旺盛なあなたに贈る、
ちょっとマニアックなExcel関数チャレンジです!

今回は、あえて色々な関数を使って「都道府県」と「性別」の2つの条件でデータをカウントすることに挑戦してみましょう!

関数だけでどこまでカウントできるか、その限界を探ってみましょう!

今回のミッション

現在の状態とゴール

現在の状態: 顧客リストがExcelシートにある状態(300行分のデータ)です。

元データ

目指すゴール: 上記のリストから、「都道府県」と「性別」をそれぞれ指定します。
該当するデータが何件あるかをExcelの関数だけを使って表示させます。

ルール:関数以外使用禁止

はじめに、使用するのはExcelの「関数」のみです。

VBA(マクロ)などは使いません。
そして、元データの変更・加工は一切禁止!

関数だけでカウントします。

さらに、各方法で指定された関数の使用を禁止する、
という縛りプレイに挑戦します!

データの準備

データの準備手順

サンプルファイル excel_de_himatsubushi008.xlsx (18KB)をダウンロードします。

(今回は練習なので、ご自身で似たようなデータを作成してもOKです!)

続いて、検索条件を入力するためのセルとして、
例えば F2セル(都道府県用)と G2セル(性別用)を用意しましょう。

条件入力

最後に、結果を表示するセルとして、例えば I列 を用意します。

結果を表示するセルを選択

さあ、準備はできましたか?

COUNTIFSだけではない、カウント関数の奥深く、
そして少しユニークな世界へ一緒に飛び込んでいきましょう!

方法1:王道!COUNTIFS関数でカウント【制限なし】

まず、基本中の基本、そして多くの場合、最も効率的な方法です!

ここでは、特に使用する関数に制限はありません。

考えかた

複数の条件(今回は「都道府県」と「性別」)を すべて満たす セルの数を数えるための関数、
それがCOUNTIFS関数です。

これを使わない手はありませんよね!

基本的に、COUNTIFS(条件範囲1, 条件1, 条件範囲2, 条件2, …)
という形で、条件範囲と条件のペアをどんどん追加していくだけです。

よって、AND条件でのカウントが簡単にできます。

手順

それでは、具体的な手順を見ていきましょう。

検索条件の入力

まず、検索条件を入力するセルとして、
F2にカウントしたい都道府県名(例: “宮城県”)、G2に性別(例: “女”)を入力します。

条件入力

数式の入力

次に、結果を表示したいセル(例: I2)に以下の数式を入力します。

=COUNTIFS(B2:B301, F2, C2:C301, G2)
(見やすいように数式に空白を挿入しています)

数式入力

動作確認

入力できたら、動作を確認しましょう。

F2に “宮城県”、G2に “女” と入力した場合、
I2セルに宮城県出身の女性の人数が表示されれば成功です!

動作確認

解説

この数式の各部分を見てみましょう。

B2:B301, F2 : 1つ目の条件。

B2:B301, F2

B(都道府県)の中から、F2セルの値(例: “宮城県”)と一致するものを探します。

C2:C301, G2 : 2つ目の条件。

C2:C301, G2

C(性別)の中から、G2セルの値(例: “女”)と一致するものを探します。

この関数は、指定されたすべての条件を同時に満たす行の数を返します。

メリット&デメリット

メリット:

  • 複数の条件でのカウントのために作られた関数なので、最も直感的で分かりやすい。
  • 数式がシンプルで、条件が増えても見やすい。
  • 多くの場合、計算も高速。

デメリット:

特にありません

強いて言えば、
これしか知らないと他の関数の応用力が身につかないかも?
(今回の記事の趣旨ですね!)

方法2:COUNTIFをスピルさせて組み合わせる!【COUNTIFS 使用禁止】

さて、ここからが本番です!

もし COUNTIFS が使えなかったらどうしましょう?

COUNTIF なら使える、という状況を想定してみます。

ここでは、COUNTIF関数を少し特殊な使い方で組み合わせ、
スピル機能を利用してAND条件のカウントを目指します。

注意:このCOUNTIFの使い方は、筆者の仮説および独自の調査研究が含まれています。

考えかた

COUNTIF関数は、通常はCOUNTIF(範囲, 条件)の形で単一の条件でカウントします。

しかし、ここでは引数の指定順序を変え配列処理とスピル機能を活用するアプローチを取ります。

どういうこと??

具体的には、COUNTIF(条件, 範囲) の形で記述し、
これが内部的に各行が条件に一致するかどうかを評価した結果をスピルで生成すると考えます。

(例えば一致なら1不一致なら0のような配列

スピルしている様子

そして、「都道府県」に関する条件と「性別」に関する条件、
それぞれのCOUNTIFが生成した配列(スピル結果)を掛け合わせます。

スピル結果の掛け合わせ

これにより、両方の条件を満たす行に対応する要素のみが 1 となる新しい配列が作られます。

最後に、この配列に含まれる 1 をSUM関数で合計することで、
両方の条件に一致するデータの総数をカウントします。

この使い方に関しては以下の記事で紹介しています。

手順

それでは、具体的な手順を見ていきましょう。

検索条件の入力

まず、F2セルに都道府県、G2セルに性別を入力しておきます。

条件入力

数式の入力

次に、結果を表示したいセル(例: I3)に以下の数式を入力します。

=SUM((COUNTIF(F2,B2:B301)*COUNTIF(G2,C2:C301)))

数式=SUM((COUNTIF(F2,B2:B301)*COUNTIF(G2,C2:C301)))

この数式は、COUNTIFの標準的な引数の順序とは異なりますが、スピル機能を利用した特定の動作を意図したものです。

動作確認

入力できたら、動作を確認しましょう。

F2に “宮城県”、G2に “女” と入力した場合、
I3セルに「宮城県」かつ「女」であるデータの件数が正しく表示されれば成功です。

動作確認

解説

この数式の各部分の意図された動作を解説します。

COUNTIF(F2,B2:B301) : この部分は、B2からB301の各セルがF2の条件と一致するかどうかを評価し、結果を配列としてスピルで生成すると考えられます。(例: 一致なら1、不一致なら0の配列)

COUNTIF(G2,C2:C301) : 同様に、C2からC301の各セルがG2の条件と一致するかどうかを評価し、結果を配列としてスピルで生成すると考えられます。

上記2つのCOUNTIF関数がスピルで生成した配列同士を、要素ごとに掛け合わせます。

配列の掛け合わせ説明

両方の条件に一致する行(両方の配列で1となる要素)に対応する要素のみが 1 となり、
それ以外は 0 となる新しい配列が生成されます。

SUM(…) : 最後に、掛け合わせた結果の配列(1と0で構成される)に含まれるすべての数値を合計します。

合計範囲の説明

これにより、結果的に両方の条件を満たした行の数(つまり、配列内の 1 の個数)がカウントされます。

繰り返しになりますが、COUNTIF関数の引数の順序を標準とは異なる形で指定する方法です。

Excelの配列処理とスピル機能を活用することで、
AND条件のカウントを実現しようとする、少し特殊な記述方法と言えます。

メリット&デメリット

メリット:

  • COUNTIFS関数が使えない状況でも、
    COUNTIFSUM、そしてスピル機能を利用してAND条件のカウントを実現できる可能性がある。
  • Excelの配列処理やスピル機能の挙動に対する理解を深めるきっかけになる。

デメリット:

  • COUNTIFの引数順序が標準的でないため、他の人が数式を見たときに意図を理解するのが非常に難しい可能性がある。
  • この数式の動作(特にCOUNTIF(条件, 範囲)でのスピル挙動)は、Excelのバージョンや内部仕様に依存する可能性があり、必ずしもすべての環境で意図通りに動作するとは限らない。
  • 標準的なCOUNTIFS関数や他の方法(方法3以降)に比べて、可読性や汎用性は低いと言える。

方法3:IF関数と配列で条件分岐!【COUNTIFS & COUNTIF 使用禁止】

COUNTIF系が全滅!

さあ、どうする?

次は IF 関数の登場です。

「え、IFって条件分岐でしょ?」

そうです!

でも、配列と組み合わせるとカウントにも使えるんです!

考えかた

IF関数を配列数式として利用します。

基本形は IF(論理式, 真の場合, 偽の場合) です。

この「論理式」の部分で、
「都道府県がF2と同じ」かつ「性別がG2と同じ」という条件を作ります。

条件に一致した行には 1 を、一致しない行には 0 (またはFALSE)を返すように設定します。

最後に、それらの 1SUM 関数で合計すれば、
条件に一致した行数がカウントできる、という仕組みです!

手順

それでは、具体的な手順です。

検索条件の入力

まず、F2セルに都道府県、G2セルに性別を入力しておきます。(画像は省略します!)

数式の入力

次に、結果を表示したいセル(例: I4)に以下の数式を入力します。

=SUM(IF((B2:B301=F2)*(C2:C301=G2), 1))

=SUM(IF((B2:B301=F2)*(C2:C301=G2), 1))

(古いExcelバージョンの場合、Ctrl + Shift + Enter で確定する必要があるかもしれません。Microsoft 365など新しいバージョンでは不要です)

動作確認

入力後、動作を確認します。

F2に “宮城県”、G2に “女” と入力した場合、
I4セルに”24″が表示されれば成功です!

解説

数式の仕組みを解説します。

=SUM(IF((B2:B301=F2)*(C2:C301=G2), 1))

(B2:B301=F2) : B列の各セルがF2と一致するかどうかを判定し、TRUE/FALSEの配列を返します。

(C2:C301=G2) : C列の各セルがG2と一致するかどうかを判定し、TRUE/FALSEの配列を返します。

=SUM(IF((B2:B301=F2)*(C2:C301=G2), 1))
の説明

* : この二つの配列を掛け算します。

Excelでは TRUE=1, FALSE=0 として扱われるため、両方の条件がTRUEの行だけが 1*1=1 となり、それ以外は 1*0=0 や 0*0=0 になります。

TRUE=1, FALSE=0として扱う説明

これでAND条件が表現できます!

IF(…, 1) : 条件(掛け算の結果が1)に一致した場合は 1 を返します。

一致しない場合(結果が0)は、偽の場合が省略されているため FALSE (数値としては0) を返します。

SUM(…) : IF関数が返した配列(1とFALSE(0)が混在)の合計を計算します。

結果的に 1 の個数、つまり条件に一致した行数がカウントされます。

メリット&デメリット

メリット:

  • COUNTIF系が使えなくても、IFSUM(または他の集計関数)で条件付きカウントを実現できる。
  • 配列数式の基本的な考え方条件判定TRUE/FALSE数値変換集計を学べる。

デメリット:

  • COUNTIFSに比べると数式がやや複雑になる。
  • 配列数式に慣れていないと理解しにくい。
  • 古いExcelではCtrl+Shift+Enterが必要な場合がある。

方法4:SUM関数と配列の合わせ技!【COUNTIFS & COUNTIF & IF 使用禁止】

IF関数も禁止!?

さらなる制限です!

でも大丈夫、まだ手はあります。

SUM関数と配列の演算だけでカウントしてみましょう!

考えかた

基本的な考え方は方法3と非常に似ています。(ほぼ同じですね!)

「都道府県がF2と同じ」→ TRUE/FALSEの配列

「性別がG2と同じ」→ TRUE/FALSEの配列

これらを掛け算すると、両方TRUEの行だけが 1 になるんでしたね。

TRUE=1, FALSE=0の説明

IF関数を使わずに、この 1 と 0 で構成される配列を直接 SUM 関数で合計してしまえば、それが条件一致数になるはずです!

手順

具体的な手順に進みましょう。

検索条件の入力

まず、F2セルに都道府県、G2セルに性別を入力しておきます。

数式の入力

次に、結果を表示したいセル(例: I5)に以下の数式を入力します。

=SUM((B2:B301=F2)*(C2:C301=G2))

数式=SUM((B2:B301=F2)*(C2:C301=G2))

(こちらも古いExcelでは Ctrl + Shift + Enter が必要な場合があります)

SUM関数の代わりにSUMPRODUCT関数使っても同じ結果が得られます。(説明省略)

動作確認

入力が終わったら、動作を確認してください。

F2に “宮城県”、G2に “女” と入力した場合、I5セルに正しい人数が表示されれば成功です!

方法3と同じ結果になるはずです。

解説

数式のポイントを解説します。

(B2:B301=F2) : TRUE/FALSEの配列を生成。

(C2:C301=G2) : TRUE/FALSEの配列を生成。

* : 配列同士を掛け算。

TRUE(1) * TRUE(1) = 1、それ以外は 0 となる配列を生成。

SUM(…) : 生成された 1 と 0 の配列を直接合計します。

これにより、両方の条件を満たした行(=1となった行)の数がカウントされます。

方法3のIF関数を使ったものより、少しだけシンプルになりましたね!

メリット&デメリット

メリット:

  • IF関数を使わなくても、SUM関数と配列演算だけでAND条件カウントができる。
  • 方法3より数式が少し短くなる。
  • 配列演算(TRUE/FALSE1/0として計算されること)の理解が深まる。

デメリット:

  • 依然として、COUNTIFSに比べれば直感的ではないかもしれない。
  • 配列数式である点に注意が必要(特に古いExcel)。

方法5:FILTERで行を絞り込んでROWSで数える!【COUNT系 & IF系 & SUM系 全て使用禁止】

SUM系の関数まで禁止!(AGGREGATESUBTOTALもこの際禁止!)

いよいよ厳しくなってきました…

でも、最近のExcelには強力な味方がいます。

FILTER関数とROWS関数のコンビです!

考えかた

まず FILTER 関数を使って、
条件(都道府県と性別が一致)に合う行だけをデータ全体から抽出(フィルタリング)します。

基本形は FILTER(配列, 含む条件) です。

そして、抽出された結果が何行あるかを ROWS 関数で数えます。

基本形は ROWS(配列) です。

これで、条件に一致する行数が分かる、という寸法です!

手順

さっそく手順を見てみましょう。

検索条件の入力

まず、F2セルに都道府県、G2セルに性別を入力しておきます。

数式の入力

次に、結果を表示したいセル(例: I6)に以下の数式を入力します。

=ROWS(FILTER(B2:B301, (B2:B301=F2)*(C2:C301=G2)))

数式
=ROWS(FILTER(B2:B301, (B2:B301=F2)*(C2:C301=G2)))

(この方法は FILTER 関数が使える Microsoft 365 / Excel 2021 以降が必要です)

動作確認

正しく入力できたら、動作を確認します。

F2に “宮城県”、G2に “女” と入力した場合、I6セルに正しい人数が表示されれば成功です!

解説

数式の動きを解説します。

(B2:B301=F2)*(C2:C301=G2) : ここでも配列の掛け算でAND条件を作ります。

結果は 1 (両方TRUE) と 0 (それ以外) の配列になります。

FILTER(B2:B301, …) : B列のデータを、上記の条件配列でフィルタリングします。

カウント範囲の説明

FILTER関数は、条件配列が 1 (またはTRUE) になる行だけを抽出します。(どの列を第一引数にしても結果は同じですが、ここでは例としてB列を指定)

ROWS(…) : FILTER関数によって抽出された(条件に一致した)行の数をカウントします。

メリット&デメリット

メリット:

  • SUMIFCOUNT を使わずにカウントできる。
  • FILTER関数で「条件に合うデータを抽出する」という直感的な操作に近い。
  • スピル機能により、中間結果(フィルタリングされたデータ)を確認しやすい(場合がある)。

デメリット:

  • FILTER関数が使える比較的新しいExcelバージョンが必要。(Excel 2021 以降)
  • COUNTIFSに比べると、2つの関数を組み合わせる必要がある。

方法6:超絶技巧!? FREQUENCYでカウント!【COUNT系 & IF系 & SUM系 & ROWS & FILTER 使用禁止】

ついに主要な関数がほとんど禁止に!

まさに絶体絶命!?

いえ、まだです!

Excel関数の世界は奥深い…!

最後は FREQUENCY 関数を使った、かなりマニアックな方法に挑戦です!

考えかた

FREQUENCY関数は、データが指定した区間にいくつ含まれるか(度数分布)を調べるためのものです。

基本形は FREQUENCY(データ配列, 区間配列) です。

応用として、条件に一致するデータ
(例: (B2:B301=F2)*(C2:C301=G2)で1と0の配列を生成)をFREQUENCYのデータ配列に渡し、
区間配列として 0 を指定します。

これにより、{0の個数, 1の個数} という配列が返されます。

求めたいのは1の個数なので、INDEX関数を用いてこの配列の2番目の値を取得します。

これで条件に一致するデータ数を簡単に計算できます。

なんかいまいちよく分からない!どういうこと?

FREQUENCY関数の具体的な例

では、簡単な例で説明します。

FREQUENCY関数の説明

関数=FREQUENCY(A2:A9,E2:E4)を使って、
点数(A列)のデータを範囲別に集計しています。

FREQUENCY関数は、指定した範囲(ここではE2:E4区切り)に基づいて、
各点数がどの範囲にいくつ含まれるかを自動でカウントしてくれます。

結果は、G列に表示されています。

         40以下=1
40より大きい 且つ 60以下=2
60より大きい 且つ 80以下=3
80より大きい      =2

手順

それでは、最終手段の手順です。

検索条件の入力

まず、F2セルに都道府県、G2セルに性別を入力しておきます。

数式の入力

次に、結果を表示したいセル(例: I7)に以下の数式を入力します。

=INDEX(FREQUENCY((B2:B301=F2)*(C2:C301=G2), 0), 2)

数式
=INDEX(FREQUENCY((B2:B301=F2)*(C2:C301=G2), 0), 2)

動作確認

入力後、動作を確認してください。

F2に “宮城県”、G2に “女” と入力した場合、I7セルに正しい人数が表示されれば成功です!

解説

このトリッキーな数式の仕組みを見ていきましょう。

(B2:B301=F2)*(C2:C301=G2) : 条件一致なら 1、不一致なら 0 となる配列を生成。

=INDEX(FREQUENCY((B2:B301=F2)*(C2:C301=G2), 0), 2)
の仕組み

FREQUENCY(…, 0) : 上記の 0/1 配列について、0以下のデータ(つまり0)の個数と、
0より大きいのデータ(つまり1)の個数を計算し、配列 {0の個数, 1の個数} を返します。

INDEX(…, 2) : FREQUENCYが返した配列の 2番目(2行目) の要素、
すなわち 1 の個数を取り出します。

INDEX関数の2行目を指す箇所

まさに「こんな方法があったのか!」という感じですよね!

メリット&デメリット

メリット:

  • 主要な関数が軒並み禁止されても、まだカウントできる方法があることを示せる!
  • FREQUENCY関数の通常とは異なる使い方を知ることができる。
  • 「関数の組み合わせ次第で不可能が可能になる」ことを体感できる。

デメリット:

  • 非常に分かりにくい!
  • なぜこれでカウントできるのか、直感的に理解するのが極めて困難。
  • 数式が複雑で、他の人が見て解読するのはほぼ不可能に近い。
  • 実用性は皆無と言っていい(笑)
  • 完全にパズル・知識自慢・自己満足の領域。

まとめ

まず、今回の挑戦を振り返ると、「関数縛り」というルールのもと、
Excelで特定の条件に合うデータの数を数える様々な方法にチャレンジしてみました!

王道の COUNTIFS から始まり、
COUNTIF (これは意図通りにはなりませんでしたが…)、
IFSUMFILTER & ROWS
そしてまさかの FREQUENCY & INDEX まで!

正直なところ、方法2以降(特に方法6)は、実務で使うようなものではありません。

数式が複雑になり、他の人が見たときに「何これ!?」となってしまう可能性が高いです。

でも!

大事なのは、こういった一見無駄に見えるような試行錯誤を通して、

「この関数って、実はこんな動きもするんだ!」
「条件判定って、配列を使えばこんな風にも書けるのか!」

といった発見があることです。

COUNTIFS が使えない!…なんて場面はないかもしれません。(Excel 2003 以前は使えない)

しかし、今回のように IFSUM で配列を扱ったり、
FILTERFREQUENCY の意外な使い方を知ったりした経験は、
きっとあなたの数式の組み立て能力問題解決能力の引き出しを増やしてくれるはずです!

そして、一つの正解(簡単な方法)を知っていることはもちろん大事ですが、
それ以外の様々なアプローチや関数の特性を知っておくことが、
Excelスキルをさらにレベルアップさせる鍵になります。

最後に、今回の関数パズルが、皆さんのExcelライフをより深く、
より面白くするきっかけとなれば幸いです!

タイトルとURLをコピーしました