文字列操作関数②(LEN・FIND・SUBSTITUTE)
文字列操作の第二弾は、LEN・FIND・SUBSTITUTE の3関数です。
前回の LEFT・RIGHT・MID は「文字列を切り出す」関数でした。今回は、
- LEN :文字列の 長さ(文字数) を数える
- FIND :文字列の中から、特定の文字の 位置 を探す
- SUBSTITUTE :特定の文字を 別の文字に置き換える
という、性格の違う3関数です。単体でも使えますが、LEFT・MID と組み合わせると一気に強力になる のがこの3関数の本領です。

LEN関数の構文
=LEN(文字列)
引数は1つだけ。「この文字列、何文字ある?」を返してくれる関数 です。

LEN関数を使ってみる
:::excel
A1=商品名
A2=コーヒー
A3=プレミアム紅茶
A4=ショートケーキ
A5=季節限定プリン
:::
B2セルに、
=LEN(A2)
結果:4

「コーヒー」は4文字、「プレミアム紅茶」は7文字、と、それぞれの文字数が並びます。
LEN関数は単体で「文字数チェック」に使えます。たとえば、
- 商品コードが必ず10桁になっているか
- 入力された電話番号が11桁あるか
といった データの入力チェック に活躍します。
半角・全角もLENでは1文字
LEN関数も、LEFT・RIGHT・MID と同じく、半角でも全角でも1文字としてカウント します。
=LEN("Excel") → 5
=LEN("エクセル") → 4
=LEN("Excel初心者") → 8
全角を2文字、半角を1文字として扱う「バイト数で数えたい」場合は LENB という別関数がありますが、こちらも通常業務ではほぼ使いません。
FIND関数の構文
=FIND(検索文字列, 対象, 開始位置)
- 検索文字列 :探したい文字(例:「-」「@」「 」)
- 対象 :探される側の文字列
- 開始位置 :何文字目から探すか(省略すると先頭から)
「この文字、左から数えて何文字目にある?」を返してくれる関数です。

FIND関数を使ってみる
:::excel
A1=商品データ
A2=P001-コーヒー
A3=PD123-プレミアム紅茶
A4=A-ケーキ
A5=ITEM999-季節プリン
:::
ハイフン「-」の位置を知りたい場合、B2セルに、
=FIND("-", A2)
結果:5(5文字目にハイフンがある)

第3引数は、ほとんどのケースで省略して使います。
下にコピーすると、A3 は「6」、A4 は「2」、A5 は「7」と、行ごとに違う位置が返ります。これが FIND の真価 です。
前回 LEFT は「左から○文字」と固定の数を指定する必要がありましたが、FIND と組み合わせれば「ハイフンの直前まで」「@マークの前まで」といった動的な切り出し ができます。
=LEFT(A2, FIND("-", A2) - 1)
結果:P001(A3 は「PD123」、A4 は「A」、A5 は「ITEM999」)
「FINDで位置を求める → そこから -1 した文字数で LEFT する」という王道パターン。LEVEL 7 でいちばん登場頻度が高い組み合わせ です。

見つからないとエラーになる
FIND関数は、指定した文字が見つからないと #VALUE! エラー を返します。
=FIND("@", "abc") → #VALUE!
実務では「そもそも文字が含まれていない行」が紛れ込むこともあるので、IFERROR関数(レッスン047)と組み合わせるのが定石です。
=IFERROR(FIND("@", A2), "区切りなし")
大文字・小文字を区別する/しない
FINDは 大文字と小文字を区別 します。
=FIND("a", "ABCDE") → #VALUE!(小文字のaは無い)
=FIND("A", "ABCDE") → 1
区別したくない場合は、双子の関数 SEARCH を使います。引数の使い方は FIND とまったく同じで、SEARCHは大文字・小文字を区別しません。
=SEARCH("a", "ABCDE") → 1(小文字aと大文字Aを同一視)
「厳密に探したい → FIND」「ゆるく探したい → SEARCH」と覚えておけばOKです。
SUBSTITUTE関数の構文
=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
- 文字列 :元のテキスト
- 検索文字列 :置き換えたい文字
- 置換文字列 :置き換え後の文字
- 置換対象 :何番目を置き換えるか(省略すると すべて 置換)
「文字を別の文字に置き換える」関数。Excel の「置換機能(Ctrl+H)」を、関数として使えるバージョン とイメージしてください。

SUBSTITUTE関数を使ってみる
電話番号のハイフンを取り除きたい場合、
:::excel
A1=電話番号
A2=03-1234-5678
A3=06-9876-5432
A4=045-111-2222
:::
B2セルに、
=SUBSTITUTE(A2, "-", "")
結果:0312345678

第3引数を 空文字 "" にすることで、「該当文字を削除する」という使い方もできます。
何番目だけ置換する
「2番目のハイフンだけ取り除きたい」というケース。
=SUBSTITUTE(A2, "-", "", 2)
結果:03-12345678(2つ目のハイフンだけ消えた)
第4引数を指定すれば、何番目を置換するかピンポイントで指定 できます。省略するとすべて置換 されるので、状況に応じて使い分けてください。
置換機能(Ctrl+H)との違い
「置換機能でも同じことができるじゃないか」と思われるかもしれません。実は、その通りです。
| 置換機能(Ctrl+H) | SUBSTITUTE関数 | |
|---|---|---|
| 操作方法 | クリック操作 | 数式 |
| 元データへの影響 | 直接書き換わる | 元データはそのまま |
| 結果の自動更新 | 手動でやり直し | 元データが変われば自動更新 |
| 何番目だけの指定 | 不可(全件) | 第4引数で指定可 |
一度の操作で済む場合は置換機能が役に立ちますが、毎回上がってくるデータに同じ処理をしなければならないとき、この関数の出番と言えるでしょう。
まとめ
- LEN:文字列の 文字数を数える
- FIND:特定の文字が 何文字目にあるか を探す(大文字小文字を区別する)
- SEARCH:FIND と同じだが、大文字小文字を区別しない
- SUBSTITUTE:特定の文字を 別の文字に置き換える(空文字なら削除)
- FIND × LEFT・MID の組み合わせが、LEVEL 7 で最も使う黄金パターン
次回は TRIM・CLEAN・TEXT。「余計な空白を消す」「改行などを取り除く」「数値をきれいな書式に変える」という、データクレンジングと表示整形の関数たちです。
ショートカット
※このレッスンに対応するショートカットはありません。