メニュー
COUNTIFS関数
使用例
配列数式との違い
 AND条件 1 - 空白セル無し
 AND条件 2 - 空白セルあり
 OR条件1 - 重複無し
 OR条件2 - 重複あり
 結論
サンプルファイルのダウンロード
解答を 全て展開 折り畳む

COUNTIFS関数

説明

COUNTIFS関数 は、複数の範囲のセルに条件を適用して、すべての条件が満たされた回数カウントする。
Excel2007以降のバージョンで使用可

書式

COUNTIFS (条件範囲 1, 検索条件 1, [条件範囲 2, 検索条件 2],…) 英語ヘルプ原文

引数
条件範囲1:必須。 対応する条件による評価の対象となる最初の範囲を指定。
条件1:必須。 計算の対象となるセルを定義する条件を数値、式、セル参照、
  または文字列で指定。
  例: 32、">32"、B4、"Windows"、または "32" のような形式。
条件範囲2, 条件2,...:省略可。 追加の範囲と対応する条件。
  最大127組の範囲/条件のペアを指定可。

空白セルの扱いについて

・空白セルへの参照について:「条件の引数が空のセルへの参照であった場合、空のセルは 0 と見なす。」
 (If the criteria argument is a reference to an empty cell,
  the COUNTIFS function treats the empty cell as a 0 value.)
 との記述があるが、どうも、違うように思われる。

実験してみると、どう見ても、空白セルは「0」ではなく、無視されるように見える。下図

数値が入力されている場合は「未満、より大きい」共に反応するが、
空白セルの場合は、どちらの条件についても「 0 (≒FALSE)」となり、無視されているようである。
 (未満、大きい、等しい、それぞれ空白セルと比較しても「0」が返却される。)

 

補足説明

・条件には、半角の疑問符 (?) または半角のアスタリスク (*) をワイルドカード文字として使用可。
 それぞれ任意の1文字を表し、1文字以上の任意の文字列を表す。
 「?」,「*」等を通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前に半角のチルダ (~) を付ける。

使用例

黒枠内に、COUNTIFSを使用した式を設定しなさい。
男 かつ 30歳以下 かつ 東京出身 の人数は
です。
答えは 2 人です。



解答例: =COUNTIFS(B4:B14,"男",C4:C14,"<=30" ,D4:D14,"東京")



配列数式との違い

COUNTIFSと配列数式のどちらを使用するかは、条件により異なります。

AND条件 1 - 空白セル無し

「5以下」の「赤」の個数を求めます。
答えは下図右側の通り、「2」個



それぞれの方法で算出してみます。
 ブール演算: TRUE * TRUE = 1 TRUE * FALSE = 0 FALSE*FALSE = 0
「Noが5以下」と「色が"赤"」の論理積(AND条件)で求めます。

配列数式

論理積後の値を合計(=共に真「1」の個数)
2 {=SUM((B3:B12<=5)*(C3:C12="赤"))}

COUNTIFS関数

条件それぞれを同時に満たす個数を算出
2 =COUNTIFS(B3:B12,"<=5" ,C3:C12,"赤")

同じ結果が得られ、特に優劣はありませんね。

AND条件 2 - 空白セルあり

「5以下」の「赤」の個数を求めます。
今度は、空白セルが存在します。
答えは下図右側の通り、「2」個



それぞれの方法で算出してみます。
 ブール演算: TRUE * TRUE = 1 TRUE * FALSE = 0 FALSE*FALSE = 0
「Noが5以下」と「色が"赤"」の論理積(AND条件)で求めます。

配列数式

論理積後の値を合計(=共に真「1」の個数)
3 {=SUM((B3:B12<=5)*(C3:C12="赤"))}
同じく間違い。空白を「」と認識していますね。

配列数式(空白判定)

論理積後の値を合計(=共に真「1」の個数)
2 {=SUM((B3:B12<>"")*(B3:B12<=5)*(C3:C12="赤"))}
論理積に「空白セル判定」を追加すると、今度は正解。

COUNTIFS関数

条件それぞれを同時に満たす個数を算出
2 =COUNTIFS(B3:B12,"<=5" ,C3:C12,"赤")
問題なく、正しい答えを出しました。

空白セルがある場合は、COUNTIFSに軍配が上がりますね。

OR条件1 - 重複無し

東京 または 神奈川 または 埼玉



・配列数式:2 {=COUNTIF((D3:D13="東京")+(D3:D13="神奈川")+(D3:D13="埼玉"),">0")}
  SWITCH関数を利用すると、もう少しスマートに記述できます。(Excel2016以降のバージョンで有効)
      2 {=COUNT(SWITCH(D3:D13,"東京",1,"神奈川",1,"埼玉",1,""))}

・COUNTIFS:2 =COUNTIF(D3:D13,"東京")+COUNTIF(D3:D13,"神奈川")+COUNTIF(D3:D13,"埼玉")

この場合は、配列数式もCOUNTIFSも同じ結果になり、問題ありませんね。

OR条件2 - 重複あり

男 かつ (30以下 または 東京)

・COUNTIFSの場合:



正解は「4」ですが、「6」が結果として得られます。
下記の式では、前項の「男 かつ 30以下 かつ 東京」の重複が2名居ることが災いして、単純な加算では間違った結果となります。

6 =COUNTIFS(B3:B13,"男",C3:C13,"<=30")+COUNTIFS(B3:B13,"男",D3:D13,"東京")
重複分を減算しなければいけませんが、3つの重複、4つの重複などがある場合を考えると、簡単ではないですね。

・配列数式の場合


・4 {=COUNTIF((B3:B13="男")*((C3:C13<=30)+(D3:D13="東京")),">0")}
配列数式では正解ですね
COUNTIF関数で「0」より大きいかの判定により、重複「2」も1個と数えて正しい解が得られます。

重複がある場合のOR条件(論理和)では、配列数式が有効です。
一般的に配列数式の方に汎用性があるように思えます。

結論

AND条件(論理積)のみの条件時(空白セルがある場合)は、COUNTIFS(SUMIFS等)関数が便利
OR条件(論理和)が混在している場合は、配列数式が便利
×
PageTop