[エクセル中級] セル内に文字列が何個あるか数える
2018/04/07
セルの中に入っている特定の文字のカウント方法です。後ほど文字列(2文字以上)の場合も説明します。
方針
Excelでは直接文字列の出現数をカウントする関数が用意されていません。
そこで、
[元の文字列の文字数]-[出現した文字を削除した文字列の文字数]を計算することにします。
ここでは、
[aaa/bbb/ccc/ddd/eee の文字数]-[aaabbbcccdddeee 文字数]となります。
SUBSTITUTE関数 で数えたい文字列を削除
SUBSTITUTE関数 の目的は「文字列の置換」です。文字列から特定の文字列を検索し、その文字列を別の文字列に置換します。
ここでは、空の文字列[""]に置換することで、[/]を削除した文字列を得ます。
LEN関数 で文字列の長さを取得
あとは、[元の文字列]と[/ 削除後の文字列]のそれぞれの長さを計算して、差を求めるだけです。
LEN関数 は文字列の長さを返します。
C3: =LEN(A1)-LEN(SUBSTITUTE(A1,A3,""))
文字列(2文字以上)の場合
ここまでは、1文字の場合で説明してきましたが、2文字以上の文字列を探したい場合はどうすればいいでしょうか?
2文字以上の場合でも基本的には同じです。[元の文字数]と[文字列を削除したときの文字数]を比較して、出現数を数えます。
ただし、単に差分を求めると数える文字列の長さ分多く数えてしまうので、探す文字列の文字数で割ります。
C4: =(LEN(A1)-LEN(SUBSTITUTE(A1,A4,"")))/LEN(A4)
これで複数文字でも安心ですね。
補足:連続文字の扱い
先ほどの[//]の検索では、出現数は 3 でした。
これは、[//]を削除した文字列が[aaabbb/cccddd/eee/fff]となって、[///]からは一度だけ[//]が削除されるためです。