Excel:特定のテキストを含むセルをカウント(完全一致と部分一致)

  • これを共有
Michael Brown

このチュートリアルでは、Excelで特定のテキストを含むセルの数をカウントする方法を紹介します。 完全一致、部分一致、フィルタリングされたセルに関する数式の例が掲載されています。

先週は、Excelでテキストを含むセル(任意のテキストを含むすべてのセル)を数える方法を紹介しました。 大きな情報の塊を分析するとき、特定のテキストを含むセルの数を知りたい場合もあります。 このチュートリアルでは、その方法を簡単に説明します。

    Excelで特定のテキストを含むセルをカウントする方法

    Microsoft Excelには、条件付きでセルを数えるための特別な関数、COUNTIF関数があります。 必要なのは、対象の文字列を クライテリア の議論になります。

    ここでは、特定のテキストを含むセルの数をカウントする一般的なExcelの数式を紹介します。

    COUNTIF(範囲, " テキスト ")

    A2:A10に項目IDのリストがあり、特定のID、例えば「AA-01」を持つセルの数を数えたいとします。 この文字列を第2引数に入力すると、次のような簡単な計算式が得られます。

    =countif(a2:a10, "aa-01")

    ユーザーが数式を変更することなく、任意のテキストを含むセルをカウントできるようにするには、あらかじめ定義されたセル(D1など)にテキストを入力し、セル参照を指定します。

    =countif(a2:a10, d1)

    注)ExcelのCOUNTIF関数は ケースインセンシティブ 大文字と小文字を区別して処理したい場合は、次の大文字小文字を区別する式を使用します。

    特定のテキストを含むセルをカウントする方法(部分一致)

    前の例で説明した数式は、条件に完全に一致します。 セル内に少なくとも1つの異なる文字、たとえば最後に余分なスペースがある場合、それは完全一致ではないので、そのようなセルはカウントされません。

    特定のテキストを含むセルの数を調べるには、条件にワイルドカード文字、つまり任意の文字列を表すアスタリスク(*)を使用します。 目的に応じて、数式は次のようになります。

    で特定のテキストを含むセルをカウントする。 振り出し :

    COUNTIF(範囲, " テキスト *")

    で特定のテキストを含むセルをカウントする。 どの位置 :

    COUNTIF(範囲, "*") テキスト *")

    例えば、範囲A2:A10にある「AA」で始まるセルの数を求めるには、以下の数式を使用します。

    =countif(a2:a10, "aa*")

    任意の位置に "AA "を含むセルのカウントを得るには、こちらを使用します。

    =countif(a2:a10, "*aa*")

    数式をよりダイナミックにするために、ハードコードされた文字列をセル参照に置き換えます。

    特定のテキストで始まるセルをカウントすること。

    =COUNTIF(A2:A10, D1& "*")

    特定のテキストがどこかにあるセルをカウントすること。

    =COUNTIF(A2:A10, "*"&D1&"*")

    下のスクリーンショットはその結果です。

    特定のテキストを含むセルを数える(大文字と小文字を区別する)

    大文字と小文字を区別する必要がある場合、COUNTIF関数は機能しません。 完全一致か部分一致かによって、別の数式を作成する必要があります。

    特定のテキストを含むセルをカウントする大文字小文字を区別する数式(完全一致)

    ある文字列が大文字小文字を認識しているセルの数を数えるために、SUMPRODUCT関数とEXACT関数を組み合わせて使用することにします。

    sumproduct(--exact(") テキスト ", レンジ ))

    この処方の仕組み

    • EXACT は、範囲内の各セルをサンプルテキストと比較し、 TRUE と FALSE 値の配列を返す。 TRUE は完全一致、FALSE はそれ以外のセルを表す。 ダブルハイフン(と呼ばれる。 ダブルユニオン ) は,TRUE と FALSE を 1 と 0 に変換する。
    • SUMPRODUCT は、配列のすべての要素を合計します。 その合計は、1の数であり、マッチの数です。

    例えば、D1のテキストを含むA2:A10で、大文字と小文字を異なる文字として扱うセルの数を求めるには、次の数式を使用します。

    =sumproduct(--exact(d1, a2:a10))

    特定のテキストを含むセルをカウントする大文字小文字を区別する数式(部分一致)

    セル内の任意の場所にある目的の文字列を見つけることができる大文字小文字を区別する数式を構築するために、3つの異なる関数を使用しています。

    sumproduct(--(isnumber(find(") テキスト ", レンジ ))))

    この処方の仕組み

    • 大文字と小文字を区別するFIND関数は、範囲の各セルから目的のテキストを探します。 成功すれば最初の文字の位置を、そうでなければ#VALUE!エラーを返します。 分かりやすくするために、正確な位置を知る必要はありません。(エラーではなく)数字があれば、そのセルが目的のテキストを含んでいると言うことです。
    • ISNUMBER関数は、FINDが返す数値とエラーの配列を処理し、数値をTRUEに、それ以外をFALSEに変換します。 ダブルユナリー(--)は、論理値を1と0に強制的に変換します。
    • SUMPRODUCT は、1 と 0 の配列を合計し、指定したテキストをその内容の一部として含むセルの数を返します。

    実際のデータでこの数式を試すために、A2:A10にD1で入力された部分文字列が何個のセルに含まれるかを調べてみましょう。

    =sumproduct(--(isnumber(find(d1,a2:a10))))

    そして、これは3つのカウントを返します(セルA2、A3、A6)。

    特定のテキストでフィルタリングされたセルをカウントする方法

    カウントする 可視項目 の場合、完全一致か部分一致かによって、4つ以上の関数を組み合わせて使う必要があります。 例を簡単にするために、まずソースデータをざっと見てみましょう。

    を持つテーブルがあると仮定します。 オーダーID をB列に、そして 数量 このとき、あなたは1より大きい数量にしか興味がなく、それに応じてテーブルをフィルタリングしました。 問題は、フィルタリングしたセルのうち特定のIDを持つものをどのようにカウントするかということです。

    特定のテキスト(完全一致)を含むフィルタリングされたセルをカウントする式

    サンプルテキスト文字列と内容が完全に一致するフィルタリングされたセルをカウントするには、次のいずれかの数式を使用します。

    =SUMPRODUCT(SUBTOTAL(103, INDIRECT("A"&ROW(A2:A10)))), --(B2:B10=F1))

    =sumproduct(subtotal(103, offset(a2:a10, row(a2:a10) - min(row(a2:a10)),,1)), --(b2:b10=f1))

    ここで、F1 はサンプルテキスト、B2:B10 はカウントするセルです。

    これらの公式の仕組み

    どちらの式でも、核となる部分は2つのチェックを行います。

    1. 可視行と非表示行を識別するために、SUBTOTAL 関数を使用します。 関数名 引数を 103 に設定します。 SUBTOTAL に個々のセル参照をすべて提供するには、INDIRECT (最初の数式) または OFFSET、ROW、MIN (2番目の数式) を組み合わせて使用します。 見える行と見えない行を見つけることが目的なので、どの列 (この例では A) を参照しても問題はありません。 この処理の結果は、1 と 0 の配列で、1は見える行を表し、0は見えない行を表しています。行と0行 - 隠された行。
    2. 与えられたテキストを含むセルを検索する。 そのために、サンプルテキスト(F1)とセル範囲(B2:B10)を比較する。 この操作の結果は、TRUEとFALSE値の配列で、これらは二重単項演算子を用いて1または0に強制される。

    最後に、SUMPRODUCT 関数は、2 つの配列の同じ位置の要素を乗算し、結果の配列を合計します。 ゼロを乗算するとゼロになるので、両方の配列で 1 を持つセルだけが最終的に配列で 1 になります。 1 の合計が、指定したテキストを含むフィルタリングセルの個数になります。

    特定のテキスト(部分一致)を含むフィルタリングされたセルをカウントする式

    あるテキストをセル内容の一部として含むフィルタリングされたセルを数えるには、上記の数式を次のように修正します。 サンプルテキストとセル範囲を比較するのではなく、前の例の1つで説明したようにISNUMBERとFINDを使って対象テキストを検索します。

    =SUMPRODUCT(SUBTOTAL(103, INDIRECT("A"&ROW(A2:A10))), --(ISNUMBER(FIND(F1, B2:B10))))

    =sumproduct(subtotal(103, offset(a2:a10, row(a2:a10) - min(row(a2:a10)),,1)), --(isnumber(find(f1, b2:b10)))

    その結果、数式は与えられた文字列をセル内のどの位置にも配置することができます。

    注)SUBTOTAL関数で103を持つ 関数名 引数で、フィルタリングされ、手動で隠されたすべてのセルを識別します。 その結果、上記の数式は、以下のものだけをカウントします。 可視セル 見えないセルがどのように隠されたかに関係なく、フィルタリングされたセルだけを除外し、手動で隠されたセルを含めるには、3 を使用します。 関数名 .

    以上、エクセルで特定のテキストがあるセルの数を数える方法でした。 読んでいただきありがとうございました!来週のブログでお会いできるのを楽しみにしています。

    ダウンロード可能なもの

    特定のテキストを含むセルをカウントするExcelの計算式

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。