いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

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

 Googleスプレッドシートで、文字列に特定の部分文字列がいくつ含まれているかカウントする方法です。SUBSTITUTE関数とLEN関数を使う方法が有名ですが、ここでは少し変わった方法を試しています。
 なお部分文字列は何文字でもいいですが、1文字の場合はより優れた方法があります。

  • SPLIT関数を使って、文字列に含まれる特定の文字列をカウントすることができます。

手順

 ここではそれぞれの行で、B列の文字列に含まれるC列の文字列(部分文字列)をカウントするものとします。

 そこでD3セルに次のような式を入力して下方にコピーしています。

 D3セル

=COLUMNS(SPLIT(B3,C3,FALSE,FALSE))-1

 SPLIT関数は第3引数をFALSEとすることで第2引数の全体を1つの区切り文字とみなします。
 また、第4引数をFALSEとすることで、結果が空白になる場合(区切り文字が先頭や末尾にある場合、または連続する場合)でも分割します。
 この条件で分割すると、文字列は「含まれている部分文字列+1」個の列に分割されます。そこでCOLUMNS関数でその列数を数えて1を引けば部分文字列の数が求まるというわけです。
 SUBSTITUTE/LEN関数を使う方法でも全く問題ありませんが、参照回数と式の長さを若干削減できます。


 なお、部分文字列が1文字の場合は次の記事のやり方の方が使い勝手が良いです。

www.officeisyours.com