(Gスプレッドシート)特定の文字をカウントする方法

 Googleスプレッドシートで、特定の文字が入力されているセルの数や、セル内の特定の文字の数をカウントする方法について紹介します。

特定の文字が入っているセルをカウントする方法(完全一致)

 次の画像ではE3セルに数式を入力し、C3:C9の範囲のうち値が「A」であるセルの数をカウントしています。

 E3セル

=COUNTIF(C3:C9,"A")

 条件に該当するセルをカウントするCOINTIF関数を使っています。
 第1引数として対象とする範囲を、第2引数としてカウントする値(文字)を指定することでカウントすることができます。

特定の文字が含まれているセルをカウントする方法(部分一致)

 次の画像ではE3セルに数式を入力し、C3:C9の範囲のうち文字列中に「A」を含むセルの数をカウントしています。

 E3セル

=COUNTIF(C3:C9,"*A*")

 最初の例と同じくCOUNTIF関数を使っていますが、第2引数の「"*A*"」がポイントです。
 この「*」がワイルドカードと呼ばれるものの一種で、これは「任意の0文字以上の文字」に該当します。
 言い換えればこの「"*A*"」という条件は「『A』の前と後に何か文字がある(なくてもよい)文字列」、つまり「『A』を含む文字列」に該当することとなります。



 次の画像では条件を少しだけ変えて、C3:C9の範囲のうち文字列が「A」で始まるセルの数をカウントしています。

 E3セル

=COUNTIF(C3:C9,"A*")

 第2引数が「"A*"」となっており、ワイルドカード「*」がAの後ろにしかありません。
 この「"A*"」という条件は「『A』から始まり、その後に何か文字がある(なくてもよい)文字列」、つまり「『A』で始まる文字列」に該当することとなります。
 同様に「"*A"」とすれば「『A』で終わる文字列」をカウントできます。

セル内の特定の文字をカウントする方法

 文字列中に含まれる特定の文字をカウントする方法です。
 やり方を2つ紹介します。


 まず最初の方法です。
 次の画像では、C3:C9の範囲の文字列がそれぞれ何個の「A」を含んでいるかをカウントしています。

 E3セル(E9までフィルコピー)

=LEN(REGEXREPLACE(C3,"[^A]",""))

 REGEXREPLACE関数は正規表現を使って文字列の置換をする関数で、ここではA以外の文字("[^A]")を空文字列("")に置き換える、つまり削除しています。これで文字列中の「A」だけが残ります。
 その結果をLEN関数で囲むことにより「A」の数をカウントしています。

 正規表現はちょっと難しいですが、ワイルドカードよりも高度な文字列の判定・処理が可能です。次の記事で基本的な事項と利用例を紹介していますので参考まで。

(Gスプレッドシート)正規表現の基本的な使い方まとめ - いきなり答える備忘録
 


 次は2つ目の最初の方法です。
 上記例と同様に、C3:C9の範囲の文字列がそれぞれ何個の「A」を含んでいるかをカウントしています。

 E3セル(E9までフィルコピー)

=LEN(C3)-LEN(SUBSTITUTE(C3,"A",""))

 「LEN(C3)」でC3セルの文字列の長さ(文字数)をカウントしています。
 「LEN(SUBSTITUTE(C3,"A",""))」ではC3セル中の「A」を削除(空文字列に置き換え)したうえでその長さをカウントしています。つまり「A」以外の文字数をカウントしています。
 2つの値の差を計算すれば「A」の数がカウントできるというわけです。

複数種類の文字をカウントする場合

 次の画像では、C3:C9の範囲の文字列に含まれる「A」「I」「U」「E」「O」の文字の数(5種の文字の合計)をカウントしています。
 例としてC3セルの「YASUDA」は2つの「A」と1つの「U」を含んでいるので結果は「3」となっています。

 E3セル(E9までフィルコピー)

=LEN(REGEXREPLACE(C3,"[^AIUEO]",""))

 REGEXREPLACE関数を使い、AIUEOの5種の文字以外の文字("[^AIUEO]")を空文字列("")に置き換え、削除しています。
 その結果をLEN関数で囲むことで、結果的にAIUEOの5種の文字をカウントしています。
 上記例と同様にSUBSTITUTE関数を使う方法も考えられますが、5種類の文字を削除するために関数を5重にネスト(入れ子)しなければならず、非常に面倒になります。



 次の画像ではC3:C9の範囲の文字列に含まれるAからEまでの文字の数(5種の文字の合計)をカウントしています。
 例としてC3セルの「YASUDA」は2つの「A」と1つの「D」を含んでいるので結果は「3」となっています。

 E3セル

=LEN(REGEXREPLACE(C3,"[^A-E]",""))

 REGEXREPLACE関数を使い、A~Eの5種の文字以外の文字("[^A-E]")を空文字列("")に置き換え、削除しています。
 その結果をLEN関数で囲むことで、結果的にA~Eの5種の文字をカウントしています。
 このように「-」の記号を使うことで、置き換える文字の範囲指定(~から~まで)ができるのがポイントで、文字列の置換を大幅に簡略化できます。

 次の記事では英字やひらがななどを一括してカウントする例を紹介していますので参考まで。

(Gスプレッドシート)英字、数字、ひらがな、カタカナの文字数を数える - いきなり答える備忘録