SUBSTITUTE関数の使い方|文字の置換・削除とn番目だけ置き換える方法

SUBSTITUTE関数は、文字列の中から指定した文字を探して、別の文字に置き換える関数です。置換文字列に "" を指定すれば削除になります。元のデータを書き換えず、別のセルに整形結果を作れる点が、置換ダイアログとの決定的な違いです。

この記事でわかること

  • SUBSTITUTE関数の4つの引数と、削除に使う書き方
  • ハイフン・空白・改行を一括で消す実務パターン
  • 第4引数で「2番目だけ」を置換する方法
  • REPLACE関数・TRIM関数・置換ダイアログとの使い分け
  • 置換されない・結果が計算に使えないときの原因と直し方


目次

SUBSTITUTE関数の構文と引数

構文

=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])
引数指定するもの注意点
文字列元になるセル、または文字列数値でも指定できるが、結果は文字列になる
検索文字列探す文字ワイルドカード(* ?)は使えない
置換文字列置き換えたあとの文字"" を指定すると削除になる
置換対象何番目の一致だけを置換するか省略すると、見つかったものをすべて置換する

文字はすべて " で囲みます。囲み忘れると #NAME? になります。

SUBSTITUTE関数はExcel 2016以前から使える古い関数で、どのバージョンでも同じ動作をします。バージョンによる書き方の違いはありません。

SUBSTITUTE関数の使い方|文字の置換・削除とn番目だけ置き換える方法の解説図1

基本の使い方

文字を別の文字に置き換える

A2の「東京都」を「東京」に直す式です。

=SUBSTITUTE($A2, "東京都", "東京")

文字を削除する

置換文字列に空文字列 "" を指定すると、削除として働きます。実務で使うのは、圧倒的にこちらです。

=SUBSTITUTE($A2, "-", "")

電話番号や郵便番号のハイフンを外し、他システムへ取り込める形にそろえる用途で使います。

⚠️ 大文字と小文字は区別される

SUBSTITUTE関数は、大文字と小文字を別の文字として扱います。"abc" を探しても ABC は置換されません。両方を処理したいなら、UPPER関数やLOWER関数で先にどちらかへ寄せるか、SUBSTITUTEを2回重ねます。

全角と半角も別の文字です。" "(全角スペース)と " "(半角スペース)は、それぞれ別に指定する必要があります。


実務でよく使う4パターン

① 複数の文字をまとめて消す(入れ子)

SUBSTITUTEは1回に1種類しか処理できないため、種類が増えたら入れ子にします。内側から順に処理されると考えると読めます。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A2,"-",""),"(",""),")","")

空白の除去は、半角と全角の両方を指定するのが定石です。

=SUBSTITUTE(SUBSTITUTE($A2," ","")," ","")

内側で半角スペースを消し、その結果から全角スペースを消しています。片方だけだと、見た目には空白が残ったままになります。

② セル内の改行を消す

セル内改行は CHAR(10) という文字コードで入っています。これを検索文字列に指定します。

=SUBSTITUTE($A2, CHAR(10), "")

改行を消すのではなく、半角スペースやカンマに変えたいなら、置換文字列を " " や "," にします。CSVへ書き出す前の整形で使う形です。

③ n番目だけを置き換える(第4引数)

第4引数に数値を入れると、その順番の一致だけが置換されます。

=SUBSTITUTE($A2, "/", "-", 2)

「2026/04/06」なら結果は「2026/04-06」です。1つ目のスラッシュはそのまま残ります。

この引数は、「区切り位置の目印を作る」用途で効きます。文字列を特定の区切りで切り出したいとき、n番目の区切り文字だけを他で使わない記号に置き換え、FIND関数でその位置を求める、という手順が定番です。

④ 単位を外して数値に戻す

「1,200円」のような文字列を計算に使える数値へ直す形です。

=VALUE(SUBSTITUTE(SUBSTITUTE($A2,"円",""),",",""))

SUBSTITUTEの結果は文字列なので、VALUE関数で数値に変換するひと手間が要ります。変換せずに合計すると、SUM関数の集計対象から外れて0のままになります。

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

置換で消した分だけ文字数が減る性質を使うと、出現回数が数えられます。

=LEN($A2)-LEN(SUBSTITUTE($A2,"-",""))

2文字以上のキーワードを数えるなら、差を検索文字列の長さで割ります。

=(LEN($A2)-LEN(SUBSTITUTE($A2,"東京","")))/LEN("東京")
SUBSTITUTE関数の使い方|文字の置換・削除とn番目だけ置き換える方法の解説図2

うまくいかないときの原因と直し方

症状主な原因直し方
置換されない大文字・小文字が違うUPPERかLOWERで先にそろえる
置換されない全角と半角が違うASC関数・JIS関数でそろえる、または両方を指定する
置換されない* や ? をワイルドカードのつもりで使ったSUBSTITUTEでは文字そのものとして扱われる
空白が残る半角スペースだけを消した全角スペースを消す指定を入れ子で足す
合計に含まれない結果が文字列のままVALUE関数で数値に変換する
#VALUE!置換対象に 0 や負の数を指定した1以上の整数にする
#NAME?検索文字列を " で囲んでいない文字は " で囲む
元のデータが消えた元の列に直接上書きした数式は別列に置き、必要なら値貼り付けで確定させる
見えない文字が残る制御文字が混ざっているCLEAN関数と組み合わせる

「見た目は同じなのに置換されない」の切り分け

置換されないという相談は、ほぼ指定した文字と実際の文字が違うケースです。次の順で確認すると早く着きます。

  1. =LEN(A2) で文字数を数える — 想定より多ければ、見えない文字が入っている
  2. =CODE(MID(A2,3,1)) のように1文字ずつ文字コードを確認する — 半角スペースは 32
  3. =ASC(A2) で半角に寄せて比較する — 全角・半角の混在はこれで判別できる

外部システムから取り込んだデータでは、空白に見える箇所が全角スペースや制御文字であることがよくあります。

数式の結果を元データにする手順

整形が終わったら、数式の列をコピーし、元の列に「値の貼り付け」で戻します。数式のまま元列を消すと、参照先が消えて #REF! になります。

SUBSTITUTE関数の使い方|文字の置換・削除とn番目だけ置き換える方法の解説図3

似た関数・機能との使い分け

関数・機能対応バージョン何を指定するか選ぶ場面
SUBSTITUTE2016〜探す文字どこにあるか分からない文字を置換する
REPLACE2016〜位置と文字数「先頭3文字」のように場所が決まっている
TRIM2016〜—前後の余分な半角空白を落とす
CLEAN2016〜—印刷できない制御文字を落とす
置換ダイアログ(Ctrl+H)2016〜探す文字一度きりの一括修正。ワイルドカードも使える

REPLACEとの分かれ道

2つの違いは指定の仕方だけです。

=SUBSTITUTE(A2, "-", "")     … 「-」を探して消す
=REPLACE(A2, 1, 3, "")       … 先頭から3文字を消す

探す文字が決まっているならSUBSTITUTE、位置が決まっているならREPLACE。電話番号のハイフン除去は前者、固定長コードの先頭部分の差し替えは後者です。

TRIMでは消えない空白がある

TRIM関数は前後の空白を削除し、単語間の連続した空白を1つにまとめます。ただし対象は半角スペースで、全角スペースは残ります。氏名の姓名間が全角スペースで区切られている表では、TRIMを通しても空白が消えません。完全に除去したいならSUBSTITUTEを使ってください。

置換ダイアログで済む場面

一度直せば終わりなら、Ctrl+Hの置換ダイアログのほうが速く済みます。関数を選ぶ理由は、元データを残したいときと、元データが更新されるたびに整形結果も自動で追従してほしいときです。取り込みシートを毎月上書きする運用なら、数式で組んでおくと作業が消えます。


よくある質問

Q1:複数の文字を一度に置換できますか?

1つの関数では1種類だけです。種類が増えたら =SUBSTITUTE(SUBSTITUTE(A2,"-",""),"(","") のように入れ子にします。入れ子は64レベルまで書けますが、3〜4段を超えると読めなくなるため、置換の対応表を別に作ってVLOOKUP関数で引く形も検討してください。

Q2:「〇〇を含む」文字を消したいのですが、ワイルドカードは使えますか?

使えません。SUBSTITUTEでは * や ? は文字そのものとして扱われます。あいまいな指定で置換したい場合は、置換ダイアログ(Ctrl+H)を使うか、FIND関数・SEARCH関数で位置を求めてREPLACE関数で処理します。

Q3:置換した結果が右寄せになりません。

SUBSTITUTEが返すのは常に文字列だからです。数値として扱いたいときは =VALUE(SUBSTITUTE(...)) で変換するか、末尾に *1 を付けて計算させます。左寄せのままだと、SUM関数の合計にも、VLOOKUP関数の検索値にも一致しません。

Q4:数値のセルに使っても大丈夫ですか?

指定はできますが、結果は文字列になります。また、セルに表示されている「1,200」のカンマが表示形式によるものであれば、SUBSTITUTEが受け取るのはカンマのない 1200 です。表示上の記号は置換の対象になりません。

Q5:置換した文字が何個あったか知りたいのですが。

=LEN(A2)-LEN(SUBSTITUTE(A2,"-","")) で数えられます。置換で消えた分だけ文字数が減る性質を利用した書き方です。検索文字列が2文字以上なら、この差を LEN("検索文字列") で割ってください。


まとめ

SUBSTITUTEの要点
  • 引数は文字列・検索文字列・置換文字列・置換対象。置換文字列を "" にすれば削除
  • 大文字小文字・全角半角は区別される。ワイルドカードは使えない
  • 種類が複数なら入れ子。空白は半角と全角の両方を指定する
  • 結果は文字列。計算に使うならVALUE関数で数値に戻す
  • 位置が決まっているならREPLACE、一度きりの修正なら置換ダイアログ

※関数の対応バージョンはExcelの一般提供時点の情報にもとづいています。お使いの環境や更新プログラムの適用状況により、利用できる関数や表示が異なる場合があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、白石です。製造業の生産管理で15年、毎日の実績集計と帳票づくりをExcelでやってきました。マクロを組もうとして早々に挫折し、そこからは「関数と表の機能だけでどこまでやれるか」でしのいできた口です。部門では「この集計どうやるの」と聞かれる係になり、聞かれた内容を手元にメモし続けました。そのメモがいつのまにか、関数名ではなくやりたいことから引く形になっていて、それがこのサイトのもとになっています。Excelは同じことをやるのに何通りもやり方があって、しかもバージョンによって使える関数が違います。ここでは実際に動かして確かめた式だけを載せ、つまずきやすいところと使えないバージョンを先に書くようにしています。

目次