Excelで型番や住所の文字を置換したいときはないでしょうか。
けど、そんな中で悩むことは、
・「文字を指定する置換」と「位置を指定する置換」の違いがわからない
・複数の文字をいっぺんに置換する方法が知りたい
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
完成イメージ
型番や住所の文字を置換したいとき、1文字ずつ手で直すのは手間がかかり、修正ミスも起きやすくなります。
今回は
・SUBSTITUTE関数(文字を指定して置換・全部/回数指定もできる)と、REPLACE関数(位置と文字数で置換)の違いと使い方
をゴールにします。
目的に合わせて2つの関数を使い分けられるようになります。

上の画像が完成形です。元の型番(A列)に対して、SUBSTITUTEとREPLACEで置換した結果(B〜E列)が並んで表示されています。
なお、置換を入れ子にして複数の文字をまとめて変える方法と、VBAのReplaceで一括置換する方法、うまくいかないときの対処法(トラブルシュート)もあわせてご紹介します。
早速実装して試してみましょう!
もくじ
STEP1. 元データを用意する
まずは置換したい型番の一覧を用意します。
A列が元の型番で、10件のデータです。
B列から右は、これから置換した結果を表示するエリアとして空けておきます。
型番は「AB-1001-JP」のように、英字・数字・ハイフンが組み合わさった形式です。
この形だと、ハイフンを消したり一部を置き換えたりと、置換の練習にぴったりですね。

下の表をコピーして、Excelのシートに貼り付けるとそのまま試せます。
| 元の型番 | -を全部削除 | 最初の-だけ削除 | 先頭2文字をXXに | 入れ子で複数置換 |
|---|---|---|---|---|
| AB-1001-JP | ||||
| CD-2002-US | ||||
| AB-3003-JP | ||||
| EF-4004-DE | ||||
| GH-5005-FR | ||||
| AB-6006-US | ||||
| CD-7007-JP | ||||
| EF-8008-DE | ||||
| AB-9009-FR | ||||
| GH-1010-US |
※ 数式で求める列は空にしています。すでに値が入っている列はそのまま残して試せます。
STEP2. SUBSTITUTE関数で「文字を指定して」置換する
まずはSUBSTITUTE関数です。
これは「この文字を、この文字に置き換える」という、文字そのものを指定する置換です。
ハイフン「-」を消したいので、B2セルに次のように入力します。
=SUBSTITUTE(A2, "-", "")
第1引数が元の文字列、第2引数が探す文字、第3引数が置き換える文字です。
置き換える文字を「””(何もない)」にしているので、ハイフンが消えて「AB1001JP」になります。
B11までコピーすれば、10件すべてのハイフンが取れました。
「特定の文字をまとめて消す」なら、このSUBSTITUTEが第一候補です。
探している文字が見つからなくてもエラーにはならず、元の文字列がそのまま返ります。
実際の入力画面がこちらです。

数式はどのセルに入れる?
セルを選んで、数式バーにそのまま入力するだけです。
入力中は引数のヒントが表示されるので、順番を確認しながら進められます。

STEP3. SUBSTITUTEは「回数」も指定できる
SUBSTITUTEは、4つ目の引数で「何個目の文字を置き換えるか」を指定できます。
ハイフンが2つある型番で、最初の1つだけを消したい場合はこうです。
C2セルに入力して、C11までコピーします。
=SUBSTITUTE(A2, "-", "", 1)
最後の「1」が「1つ目だけ置き換える」という意味です。
すると「AB-1001-JP」のうち、最初のハイフンだけが消えて「AB1001-JP」になりました。
4つ目を省略すれば全部置換、数字を入れればその個所だけ、と使い分けられます。
「2個目だけ消したい」ときは「2」と入れます。
同じ関数でも、置換する範囲を細かくコントロールできるのがSUBSTITUTEの強みですね。

STEP4. REPLACE関数で「位置と文字数」を指定して置換する
次はREPLACE関数です。
こちらは「何文字目から、何文字分を、この文字に置き換える」という、位置で指定する置換です。
型番の先頭2文字「AB」を「XX」に変えてみましょう。
D2セルに次のように入力し、D11までコピーします。
=REPLACE(A2, 1, 2, "XX")
「1文字目から2文字分」を「XX」に置き換える、という意味です。
「AB-1001-JP」が「XX-1001-JP」になりました。
SUBSTITUTEが「文字そのもの」を探すのに対し、REPLACEは「場所」を指定するのが大きな違いです。
先頭に決まった文字を差し込みたいときなど、位置で決まる置換はREPLACEが向いています。

REPLACEの入力画面
実際の入力画面です。
第2引数が「開始位置」、第3引数が「文字数」になっています。
「どこから何文字」を数えて指定するので、位置が決まっている置換に向いています。

STEP5. 入れ子にして複数の文字をまとめて置換する
「ハイフンを消して、さらにABもXYに変えたい」など、置換を2つ重ねたいときは入れ子にします。
入れ子とは、関数の中に別の関数を入れる書き方です。
E2セルに次のように入力し、E11までコピーします。
=SUBSTITUTE(SUBSTITUTE(A2, "-", ""), "AB", "XY")
内側のSUBSTITUTEでハイフンを消し、その結果に対して外側のSUBSTITUTEで「AB」を「XY」に置換しています。
「AB-1001-JP」が「XY1001JP」になりました。
置換は内側から外側の順に進むので、順番を入れ替えると結果が変わります。
2つくらいなら入れ子で十分ですが、3つ以上になると式が見づらくなるのでVBAがラクです。

SUBSTITUTEとREPLACEの違い
2つの関数の違いを表にまとめました。
どちらも「置換」ですが、指定のしかたが根本的に違います。
| 項目 | SUBSTITUTE | REPLACE |
|---|---|---|
| 指定のしかた | 文字を指定する | 位置と文字数を指定する |
| 書式 | =SUBSTITUTE(文字列, 検索文字列, 置換文字列, [回数]) | =REPLACE(文字列, 開始位置, 文字数, 置換文字列) |
| 全部/一部 | 全部置換が既定。回数で一部だけも可 | 指定した範囲だけを置換 |
| 向いている場面 | 特定の文字・記号をまとめて消す・変える | 先頭の数文字を変える・文字を差し込む |
| ワイルドカード | 使えない(「*」は文字として扱う) | 使えない |
「この文字を変えたい」ならSUBSTITUTE、
「何文字目を変えたい」ならREPLACEがおすすめです。
SUBSTITUTEは4つ目の引数で置換する回数も指定でき、
入れ子にすれば複数の置換もまとめて行えます。
VBAのReplaceで一括置換する
件数が多く、同じ置換を繰り返すなら、VBAのReplaceが手軽です。
Alt+F11でVBAエディターを開き、標準モジュールに次のコードを貼り付けます。
Sub SubHyphen()
Dim r As Long
For r = 2 To 11
Cells(r, 2).Value = Replace(Cells(r, 1).Value, "-", "")
Next r
End Sub
VBAのReplaceは、ExcelのSUBSTITUTEと同じ「文字を指定する」置換です。
実行すると、B列にハイフンを消した型番を一気に入れられました。
ボタンに登録しておけば、クリック1つで同じ整形ができます。
「場所で指定したい」ときだけREPLACEの出番です。
どんな置換をしたいかで選べば、もう迷いませんよ。
置換で「ワイルドカード」は使える?
COUNTIFやSUMIFでは「*(任意の文字)」などのワイルドカードが使えます。
しかしSUBSTITUTEやREPLACEはワイルドカードに対応していません。
たとえば =SUBSTITUTE(A2, “*”, “”) と書いても、記号としての「*」を探すだけで、「任意の文字」としては扱われません。
「〜で始まる文字をまとめて置換」のようなことは、これらの関数ではできないと覚えておきましょう。
画面上でなら、Ctrl+H(検索と置換)のダイアログに「ワイルドカードを使用する」のチェックがあるので、そちらが便利です。
うまくいかないときの対処法(トラブルシュート)
実際に試すと、思ったとおりに動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。
| 症状 | 原因 | 対処 |
|---|---|---|
| ハイフンが消えない | 全角「-」や長音「ー」になっている | 検索文字を全角「-」や「ー」に変えて指定する |
| SUBSTITUTEで一部だけ消したい | 4つ目の引数(回数)を省略している | =SUBSTITUTE(文字列, 検索, 置換, 1) のように回数を指定する |
| REPLACEの結果がずれる | 開始位置・文字数の数え間違い | 1文字目から数える。全角も半角も1文字として数える |
| 「*」を消したいのに消えない | ワイルドカード非対応 | 「*」をそのまま検索文字に指定する(COUNTIFのようなワイルドカード検索はできない) |
| 置換したのに数値にならない | 結果が文字列のまま | 数値にしたい列は =VALUE() や「区切り位置」で数値化する |
関数の説明
今回使う2つの関数をまとめます。
どちらも置換の基本になる関数なので、違いを押さえておきましょう。
SUBSTITUTE関数(サブスティチュート)
| 書式 | =SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換回数]) |
|---|---|
| できること | 文字列の中から指定した文字を探して、別の文字に置き換えます。 |
| 戻り値 | 置換した後の文字列 |
| こんなときに | 特定の文字・記号をまとめて消したり変えたりしたいとき。回数を指定すれば一部だけも置換できます(例:最初の1つだけ)。 |
| 注意 | 大文字と小文字を区別します。「-」と全角の「-」は別の文字として扱います。ワイルドカードは使えません。 |
=SUBSTITUTE(A2, "-", "")
REPLACE関数(リプレイス)
| 書式 | =REPLACE(文字列, 開始位置, 文字数, 置換文字列) |
|---|---|
| できること | 文字列の指定した位置から、指定した文字数分を別の文字に置き換えます。 |
| 戻り値 | 置換した後の文字列 |
| こんなときに | 先頭の数文字を変えたい、途中に文字を差し込みたいなど、位置が決まっている置換。 |
| 注意 | 位置は1文字目から数えます。全角・半角どちらも1文字として数えます。ワイルドカードは使えません。 |
=REPLACE(A2, 1, 2, "XX")
完成
A列の型番に対して、4種類の置換結果が正しく並びました。
「-を全部削除」「最初の-だけ削除」「先頭2文字をXXに」「入れ子で複数置換」と、結果を比べて確認できます。
思ったとおりに動きましたか?
SUBSTITUTEとREPLACEの役割の違いがつかめれば、型番や住所の整形がぐっとラクになります。

さいごに
いかがでしょうか。
今回は、
についてまとめました。
「この文字を変えたい」ならSUBSTITUTE、「何文字目を変えたい」ならREPLACEと覚えておけば十分です。
回数指定や入れ子、VBAまで使えるようになると、手作業の修正が減ってミスも防げます。
まずは今回のサンプル表で、ぜひ一度試してみてください。
置換を使いこなすと、日々のデータ整形がぐっとラクになりますよ。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。













コメントを残す