「住所から都道府県だけ取り出したい」
「姓と名を1つのセルにまとめたい」
「余計なスペースを消したい」

こうした文字を加工する処理を担当するのが文字列関数です。数はかなりありますが、役割は5つに分けられます

この記事では、やりたいこと別の早見表から入り、実務でよく使う組み合わせまでをまとめます。

まず結論:やりたいこと → 使う関数 早見表

やりたいこと 使う関数
① 取り出す
左から○文字 LEFT
右から○文字 RIGHT
途中から○文字 MID
② つなげる
単純に結合 &(演算子)/CONCAT
区切り文字を入れて結合 TEXTJOIN
③ 置き換える
文字を指定して置換 SUBSTITUTE
位置を指定して置換 REPLACE
④ 探す・数える
文字の位置を探す(大小区別あり) FIND
文字の位置を探す(区別なし・ワイルドカード可) SEARCH
文字数を数える LEN
⑤ 整える
余分なスペースを削除 TRIM
改行など見えない文字を削除 CLEAN
全角→半角/半角→全角 ASC / JIS
表示形式を文字列にする TEXT
同じ文字を繰り返す REPT
2つの文字列が同じか判定 EXACT

① 取り出す:LEFT・RIGHT・MID

この3つは「どこから」が違うだけです。

=LEFT(A1, 3)      左から3文字
=RIGHT(A1, 4)     右から4文字
=MID(A1, 4, 2)    4文字目から2文字

MIDだけ引数が3つで、「開始位置」と「文字数」を指定します。

実務例:郵便番号から上3桁を取り出す

=LEFT(A1, 3)   → 「123-4567」から「123」

文字数が決まっていないときは FIND と組み合わせる

「-」より前を取り出したいが、文字数はバラバラ——という場合です。

=LEFT(A1, FIND("-", A1) - 1)

FINDが「-」の位置を返し、その1つ手前まで取り出すという考え方です。この組み合わせは非常によく使います。

② つなげる:& と TEXTJOIN

基本は & でいい

=A1 & B1
=A1 & " " & B1     間にスペースを入れる

2〜3個をつなぐだけなら、&(アンパサンド)が最も手軽です。

数が多いなら TEXTJOIN

TEXTJOINは「区切り文字」と「空欄を無視するか」を指定できます。

=TEXTJOIN(", ", TRUE, A1:A10)

第2引数を TRUE にすると空白セルを飛ばして結合します。これが非常に便利で、CONCATや&では区切り文字だけが並んでしまう場面を解決できます。

A1:A10のうち3つだけ入力されている場合、TEXTJOINなら「東京, 大阪, 福岡」ときれいに並びます。

③ 置き換える:SUBSTITUTE が主役

=SUBSTITUTE(A1, "株式会社", "")

「株式会社」を空文字に置き換える=削除するという書き方です。会社名の整形などで多用します。

SUBSTITUTE と REPLACE の違い

指定するもの 使う場面
SUBSTITUTE 置き換える文字そのもの ほとんどはこちら
REPLACE 開始位置と文字数 位置が決まっているとき

迷ったらSUBSTITUTEを使えば大丈夫です。

④ 数える:特定の文字が何個あるか

「セルの中に『,』が何個あるか数えたい」——よくある要望ですが、専用の関数はありません。LENとSUBSTITUTEを組み合わせて求めます。

=LEN(A1) - LEN(SUBSTITUTE(A1, ",", ""))
考え方はシンプルです。

  1. LEN(A1) … 元の文字数
  2. SUBSTITUTE(A1, ",", "") … 「,」を全部消した文字列
  3. その差が「,」の個数

「消す前」と「消した後」の文字数の差を取る——この発想は他の場面でも応用が利きます。

2文字以上の単語を数えるとき

単語の文字数で割ります。

=(LEN(A1) - LEN(SUBSTITUTE(A1, "東京", ""))) / 2

「東京」は2文字なので、差を2で割れば出現回数になります。

⑤ 整える:TRIM は最初にかけておく

TRIM余分なスペースを取り除く関数です。

=TRIM(A1)
見えないスペースは、あらゆる不具合の原因になります。
VLOOKUPが#N/Aになる、COUNTIFの件数が合わない、重複が正しく除去できない——その多くが前後の空白です。
他システムやWebからコピーしたデータは、まずTRIMをかける習慣をつけると事故が減ります。

なお、TRIMで消えるのは半角スペースです。全角スペースが混ざっている場合は、SUBSTITUTEと組み合わせます。

=TRIM(SUBSTITUTE(A1, " ", " "))

改行やタブなど目に見えない制御文字が入っている場合はCLEANを使います。

実務でよく使う組み合わせ

姓と名を分ける(間にスペースがある場合)

姓:=LEFT(A1, FIND(" ", A1) - 1)
名:=MID(A1, FIND(" ", A1) + 1, LEN(A1))

スペースの位置をFINDで見つけ、その前後を取り出しています。

ファイル名から拡張子を取り出す

=RIGHT(A1, LEN(A1) - FIND("*", SUBSTITUTE(A1, ".", "*", LEN(A1) - LEN(SUBSTITUTE(A1, ".", "")))))

やや複雑ですが、「最後のピリオド」を特殊文字に置き換えてから探すという定番の手法です。SUBSTITUTEの第4引数で「何番目を置き換えるか」を指定できることを利用しています。

数値を文字列として表示形式つきで扱う

=TEXT(A1, "#,##0円")     → 1,234円
=TEXT(A1, "yyyy年m月d日")  → 2026年8月22日

TEXT関数は、結合するときに書式を保ちたい場面で効きます。=A1&"円" だと桁区切りが消えてしまいますが、TEXTなら維持されます。

よくあるつまずき

FINDでエラーになる

探す文字が見つからないと #VALUE! エラーになります。存在しない可能性があるなら、IFERRORで包んでください。

=IFERROR(FIND("-", A1), 0)

FINDとSEARCHはどちらを使う?

大文字・小文字 ワイルドカード
FIND 区別する 使えない
SEARCH 区別しない 使える

厳密に一致させたいならFIND、ゆるく探したいならSEARCHです。

結合したら日付が数字になった

=A1&"締切" のように結合すると、日付がシリアル値(45000のような数字)になります。TEXT関数で書式を指定してください。

=TEXT(A1, "m月d日") & "締切"

全角と半角が混在して一致しない

ASC(全角→半角)またはJIS(半角→全角)でどちらかに揃えてから比較します。

まとめ

  • 文字列関数は①取り出す ②つなげる ③置き換える ④探す・数える ⑤整えるの5つに分けて覚える
  • 取り出すのはLEFT / RIGHT / MIDFINDと組み合わせると文字数が可変でも対応できる
  • 結合は&で十分。数が多いならTEXTJOIN空欄を飛ばせるのが利点)
  • 置換はSUBSTITUTEが主役。REPLACEは位置指定が必要なときだけ
  • 特定の文字を数えるには LEN と SUBSTITUTE の差を取る(専用関数はない)
  • TRIM は最初にかける習慣を。VLOOKUPの#N/Aやカウントのズレは、多くが見えないスペースが原因
  • 結合で日付や桁区切りが崩れるときはTEXT関数で書式を指定する

関連記事:Excel検索・参照関数まとめExcel情報関数まとめExcelの数学・三角関数まとめ