【Excel】COUNTIF関数で大文字と小文字を区別する方法

ExcelのCOUNTIF関数は、「大文字と小文字」を区別しません。「Appleとapple」を区別してカウントしたい場合、他の関数を組み合わせて実現します。この記事では、大文字と小文字を区別してCOUNTIF関数のようにカウントする方法から、部分一致の検索まで詳しく解説します。

スポンサーリンク

はじめに

【Excel】COUNTIF関数で大文字と小文字を区別する方法

COUNTIF関数は、検索キーと一致するセルを数えるとき、全角と半角は区別しますが、「大文字と小文字」を区別しません。

たとえば、A列のテキストの中から「pdf」という文字列を数えたい場合、「PDF・pdf・pDf」のどれがA列にあっても、一致したものとしてカウントします。

例:COUNTIF(A2:A5,"pdf")

COUNTIF関数の引数:(範囲, 条件)

スポンサーリンク

COUNTIF:大文字・小文字を区別してカウントする

【Excel】COUNTIF関数で大文字と小文字を区別する方法

大文字と小文字を区別して数えたい場合は、SUMPRODUCT関数とEXACT関数を組み合わせます。

たとえば、A列のテキストの中から「pdf」と完全に一致する文字列を数えたい場合は、次の数式を使います。

例:=SUMPRODUCT(EXACT(A2:A5,"pdf")*1)

この数式では、まずEXACT関数で2つの文字列が同一であるかを検証し、その結果を{FALSE; TRUE; FALSE;FALSE}のような配列で返します。

次に*1がこの配列を{0; 1; 0; 0}という数値の配列に変換し、SUMPRODUCT関数がこの配列を受け取り、合計を返します。

SUMPRODUCT関数の引数:(配列1, [配列2, …])

スポンサーリンク

COUNTIF:部分一致で厳密に検索する

COUNTIFは、ワイルドカード(*?)を使って部分一致を検索できますが、その場合も大文字と小文字区別しません。

もし、部分一致でこれらを区別したい場合は、SUMPRODUCT関数に、それぞれFINDLEFTRIFHTといった関数を組み合わせます。

「~を含む」の場合

【Excel】COUNTIF関数で大文字と小文字を区別する方法

たとえば、A列のテキストの中から「pdf」という文字列を含むもの(大文字・小文字を区別して)を数えたい場合は、次の数式を使います。

例:=SUMPRODUCT(ISNUMBER(FIND("pdf",A2:A5))*1)

FIND関数の引数:(検索文字列, 検索対象のテキスト, [開始位置])


この数式では、まずFIND関数が検索文字列がテキスト内に最初に現れる位置を取得し、その結果をISNUMBER関数が{TRUE;TRUE; FALSE;TRUE}のような配列で返します。

次に*1がこの配列を{1; 1; 0; 1}という数値の配列に変換し、SUMPRODUCT関数がこの配列を受け取り、合計を返します。

「~で始まる」の場合

【Excel】COUNTIF関数で大文字と小文字を区別する方法

たとえば、A列のテキストの中から「pdf」という文字列で始まるもの(大文字・小文字を区別して)を数えたい場合は、次の数式を使います。

例:=SUMPRODUCT(EXACT(LEFT(A2:A5,LEN("pdf")),"pdf")*1)

LEFT関数の引数:(文字列, [文字数])


この数式では、まずLEN関数が検索文字列の文字数(3)を取得し、LEFT関数がテキストの左から3文字を取り出します。

次にEXACT関数が、その取り出した文字列が「pdf」と完全に一致するかを検証し、その結果を{FALSE; TRUE; FALSE;FALSE}のような配列で返します。

最後に*1がこの配列を{0; 1; 0; 0}という数値の配列に変換し、SUMPRODUCT関数がこの配列を受け取り、合計を返します。

「~で終わる」の場合

【Excel】COUNTIF関数で大文字と小文字を区別する方法

たとえば、A列のテキストの中から「pdf」という文字列で終わるもの(大文字・小文字を区別して)を数えたい場合は、次の数式を使います。

例:=SUMPRODUCT(EXACT(RIGHT(A2:A5,LEN("pdf")),"pdf")*1)

RIGHT関数の引数:(文字列, [文字数])


この数式では、まずLEN関数が検索文字列の文字数(3)を取得し、RIGHT関数がテキストの右から3文字を取り出します。

次にEXACT関数が、その取り出した文字列が「pdf」と完全に一致するかを検証し、その結果を{FALSE; TRUE; FALSE;FALSE}のような配列で返します。

最後に*1がこの配列を{0; 1; 0; 0}という数値の配列に変換し、SUMPRODUCT関数がこの配列を受け取り、合計を返します。

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