目次
ExcelのCOUNTIF関数とCOUNTIFS関数を使って、セルにX、Y、Zが含まれる場合など、複数のOR条件を持つセルを数える方法を解説しています。
ExcelのCOUNTIF関数は1つの条件だけでセルをカウントし、COUNTIFSは複数の条件をAND論理で評価します。 しかし、複数の条件を指定し、どれかが一致すればカウントされるというOR論理が必要な場合はどうでしょう?
この問題を解決するにはいくつかの方法がありますが、このチュートリアルではそのすべてを詳しく説明します。 この例は、あなたが両方の関数の構文と一般的な使用方法について十分な知識を持っていることを前提としています。 もしそうでなければ、基本を見直すことから始めるとよいでしょう。
Excel COUNTIF関数 - 1つの条件を持つセルをカウントします。
Excel COUNTIFS関数 - 複数のAND条件を持つセルをカウントします。
さて、みんなの気持ちが固まったところで、いよいよ本題に入ります。
ExcelでOR条件を持つセルをカウントする
ここでは、最も単純なシナリオである、指定された条件のいずれか(少なくとも1つ)を満たすセルをカウントする方法を説明する。
式1.COUNTIF+COUNTIF
ある値または別の値を持つセルを数える最も簡単な方法(Countif a または b ) は、通常の COUNTIF 式を書いて、各項目を個別にカウントし、その結果を加算することです。
COUNTIF( レンジ , 基準1 ) + COUNTIF( レンジ , 基準2 )例として、A列の中に「りんご」または「バナナ」が含まれているセルがいくつあるか調べてみましょう。
=COUNTIF(A:A、"りんご") + COUNTIF(A:A、"バナナ")
実際のワークシートでは、列全体ではなく範囲を指定して操作すると、計算式が高速に動作します。 条件が変わるたびに計算式を更新する手間を省くために、F1やG1などあらかじめ定義したセルに注目する項目を入力し、そのセルを参照します。 たとえば、次のようになります。
=countif(a2:a10, f1) + countif(a2:a10, g1)
この方法は、2つ程度の条件なら問題ありませんが、3つ以上のCOUNTIF関数を一緒に追加すると、式が煩雑になります。 この場合は、以下の代替案のいずれかにこだわった方がよいでしょう。
式2.配列定数によるCOUNTIF
ここでは、Excelの「SUMIF with OR conditions」の数式をよりコンパクトにしたものを紹介します。
SUM(COUNTIF()の場合 レンジ , { 基準1 , 基準2 , 基準3 , ...}))式はこのように構成されている。
個々の項目はカンマで区切り、配列は{"apples", "bananas", "lemon"}のように中括弧で囲んで、すべての条件を配列定数にパッケージ化します。
そして、その配列定数を クライテリア 通常のCOUNTIF式の引数: COUNTIF(A2:A10, {"apples", "bananas", "lemons"})
最後に、SUM関数でCOUNTIF式を変形します。 これは、COUNTIFが「りんご」「バナナ」「レモン」の3つの個数を返すので、それらの個数を足す必要があるためです。
私たちの完全な計算式は次のようになります。
=SUM(COUNTIF(A2:A10,{"apples", "bananas", "lemons"})))
として条件を提供する方が良い場合 範囲参照 のように、Ctrl + Shift + Enter で数式を入力し、配列式にする必要があります。 例えば、以下のようになります。
=sum(countif(a2:a10,f1:h1))とする。
下のスクリーンショットでは、中括弧に注目してください。これは、Excelで配列式を表す最も顕著な例です。
式3.SUMPRODUCT
ExcelでORロジックでセルを数えるもう一つの方法は、このようにSUMPRODUCT関数を使うことです。
SUMPRODUCT(1*() レンジ ={ 基準1 , 基準2 , 基準3 , ...}))ロジックをよりわかりやすくするために、次のようにも書ける。
SUMPRODUCT(( レンジ = 基準1 ) + ( レンジ = 基準2 ) + ...)この式は、範囲内の各セルをそれぞれの基準に対してテストし、基準を満たした場合に TRUE、そうでない場合に FALSE を返します。 中間結果として、TRUE および FALSE 値からなるいくつかの配列が得られます (配列の数は基準の数と同じです)。 次に、同じ位置の配列要素が加算されます。つまり、すべての配列の最初の要素、次の要素、...のように、加算が行われます。を追加すると、論理値が数値に変換され、1(基準のいずれかに一致)と0(基準のいずれにも一致しない)の1つの配列になります。 すべての基準が同じセルに対してテストされるので、結果の配列に他の数値が現れることはありません。 最後のSUMPRODUCTは、特定の位置の配列にのみTRUEがあり、他のものはFALSEになります。は,結果として得られる配列の要素を足し合わせると,目的のカウントが得られます。
最初の式は、TRUEとFALSEの2次元配列が返される点が異なりますが、これを1倍して論理値をそれぞれ1、0に変換します。
今回のサンプルデータセットに適用すると、以下のような形になる。
=SUMPRODUCT(1*(A2:A10={"apples", "bananas", "lemons"})))
または
=SUMPRODUCT((A2:A10="apples") + (A2:A10="bananas") + (A2:A10="lemons"))
ハードコードされた配列定数を範囲参照に置き換えることで、さらにエレガントなソリューションが得られます。
=sumproduct(1*( a2:a10=f1:h1))
注意:SUMPRODUCT関数はCOUNTIFより遅いので、この式は比較的小さいデータセットに使用するのが最適です。
ANDロジックだけでなく、ORロジックでもセルをカウント
要素間にマルチレベルやクロスレベルの関係がある大規模なデータセットを扱う場合、ORやAND条件を持つセルを一度にカウントする必要がある可能性があります。
例えば、「りんご」「バナナ」「レモン」のうち、「納品されたもの」の数を求めてみましょう。 どうすればいいのでしょうか? まず、条件をExcelの言語に翻訳してみましょう。
- コラムA:"りんご "または "バナナ "または "レモン"
- C列:"納品済"
別の角度から見ると、「リンゴと配達」「バナナと配達」「レモンと配達」の行を数える必要があります。 このように、3つのOR条件を持つセルを数えるというタスクは、前のセクションで行ったことと全く同じです。 唯一の違いは、COUNTIFの代わりにCOUNTIFSを使って各OR条件内のAND基準を評価することです。
式1.COUNTIFS+COUNTIFS
最も長い数式で、最も書きやすいものです :)
=COUNTIFS(A2:A10, "りんご", C2:C10, "納品") + COUNTIFS(A2:A10, "バナナ", C2:C10, "納品")) + COUNTIFS(A2:A10, "レモン", C2:C10, "納品"))
以下のスクリーンショットは、同じ数式をセル参照で表示したものです。
=countifs(a2:a10, k1, c2:c10, k2) + countifs(a2:a10, l1, c2:c10, k2) + countifs(a2:a10, m1,c2:c10, k2)
式2.配列定数付きCOUNTIFS
AND/ORロジックによるCOUNTIFS式は、OR基準を配列定数でパッケージ化することで、よりコンパクトにすることができます。
=SUM(COUNTIFS(A2:A10, {"りんご", "バナナ", "レモン"}, C2:C10, "納品された"))
条件に範囲参照を使用する場合は、Ctrl + Shift + Enter を押して完了する配列式が必要です。
=sum(countifs(a2:a10,f1:h1,c2:c10,f2))とする。
ヒント:必要であれば、自由に ワイルドカード 例えば、"グリーンバナナ "や "ゴールドフィンガーバナナ "など、あらゆる種類のバナナを数えるには、次の式を使用することができます。
=SUM(COUNTIFS(A2:A10, {"りんご", "*バナナ*", "レモン"}, C2:C10, "納品済"))
たとえば、「りんご」「バナナ」「レモン」のうち、「配達された」もので、金額が200以上のものを数えるには、COUNTIFSに基準範囲と基準のペアをもう一つ追加する。
=SUM(COUNTIFS(A2:A10, {"りんご", "*バナナ*", "レモン"}, C2:C10, "delivered", B2:B10,">200"))
または、この配列式(Ctrl + Shift + Enterで入力)を使用します。
=SUM(COUNTIFS(A2:A10,F1:H1,C2:C10,F2, B2:B10, ">"&F3))
複数のOR条件を持つ細胞のカウント
前の例では、1組のOR条件をテストする方法を学びました。 しかし、2組以上のセットがあり、すべての可能なOR関係の合計を取得したい場合はどうすればよいのでしょうか。
処理する条件の数によって、配列定数を使ったCOUNTIFSかISNUMBER MATCHを使ったSUMPRODUCTのどちらかを使用します。 前者は比較的簡単に構築できますが、2組のOR条件のみに制限されます。 後者は任意の数の条件を評価できます(もちろん、Excelの引数が255、数式全体の文字数が8192という制限があるため、妥当な数ではあります)。が、この式のロジックを理解するのに少し努力が必要かもしれません。
2組のOR条件で細胞をカウント
2組のOR条件のみを扱う場合は、前述のCOUNTIFS式に配列定数をもう1つ追加するだけです。
この式を成立させるためには、1つだけ、微細だが重要な変更が必要だ。 水平方向配列 (カンマで区切られた要素)を1つの基準セットとし 縦列 (これは,2つの配列の要素を「ペア」または「相互計算」して,その結果を2次元配列で返すようにExcelに指示するものです.
例として、「りんご」「バナナ」「レモン」のうち、「配達中」「輸送中」のものをカウントしてみましょう。
=SUM(COUNTIFS(A2:A10, {"りんご", "バナナ", "レモン"}, B2:B10, {"配送済"; "輸送中"}))
2つ目の配列定数のセミコロンに注意してください。
Excelは2次元のプログラムなので、3次元や4次元の配列を作ることはできません。 したがって、この式は2組のOR条件に対してのみ機能します。より多くの条件でカウントするには、次の例で説明するより複雑なSUMPRODUCT式に変更する必要があります。
複数のOR条件セットでセルをカウント
2つ以上のOR条件を持つセルを数えるには、SUMPRODUCT関数とISNUMBER MATCHを併用します。
例えば、「りんご」、「バナナ」、「レモン」のうち、「配送中」または「輸送中」で、「袋」または「トレイ」に梱包されているものをカウントしてみましょう。
=SUMPRODUCT(ISNUMBER(MATCH(A2:A10,{"apples", "bananas", "lemons"},0))*)
ISNUMBER(MATCH(B2:B10,{"bag", "tray"},0)))*
ISNUMBER(MATCH(C2:C10,{"delivered", "in transit"},0))))
式の中心部では、MATCH関数が指定された範囲の各セルと対応する配列定数を比較して基準をチェックします。 一致した場合、配列内の値の相対位置が返され、そうでない場合はN/Aとなります。 ISNUMBERはこれらの値をTRUEとFALSEに変換し、それぞれ1、0と同等にします。 そこからSUMPRODUCTが引き継ぎ、配列の定数を掛け算しています。0 を掛けると 0 になるので,すべての配列の中で 1 を持つセルだけが生き残り,合計される.
下のスクリーンショットはその結果です。
これは、ExcelのCOUNTIF関数とCOUNTIFS関数を使って、複数のAND条件とOR条件を持つセルを数える方法です。 このチュートリアルで取り上げた数式を詳しく見るには、以下のサンプルワークブックをダウンロードしてください。 読んでくださってありがとうございます!来週のブログでお会いしましょう
練習用ワークブック
Excel COUNTIF OR条件付き - サンプル (.xlsx ファイル)