LEVEL 7 文字列・データ加工の匠 中級
Lesson 064

文字列操作関数②(LEN・FIND・SUBSTITUTE)

練習用Excelファイル lesson064-practice.xlsx

練習用ファイルは、パソコンからダウンロードしてください。

文字列操作関数②(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

LENで文字数を数える
LENで文字数を数える

「コーヒー」は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文字目にハイフンがある)

FINDで「-」の位置を探す
FINDで「-」の位置を探す

第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とLEFTを組み合わせる
FINDとLEFTを組み合わせる


見つからないとエラーになる

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

SUBSTITUTEでハイフンを除去
SUBSTITUTEでハイフンを除去

第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。「余計な空白を消す」「改行などを取り除く」「数値をきれいな書式に変える」という、データクレンジングと表示整形の関数たちです。


ショートカット

※このレッスンに対応するショートカットはありません。

次のLessonへ Lesson 065 文字列操作関数③(TRIM・CLEAN・TEXT)