概要
「’(株)’ を ‘株式会社’ に、’(有)’ を ‘有限会社’ に一気に変えたい」
「’-’ と ‘ー’ と ‘―’ を全部 ‘ – ‘ に統一したい」
「全角の記号を全部半角にしたい」
こういう “複数種類の文字を、一括で置換したい” ときに使うのが
SUBSTITUTE を“重ねて使う”テクニックです。
Excel には「一発で複数パターンを置換する専用関数」はないので、
SUBSTITUTE を入れ子にして、順番に置換していくのが定番パターンになります。
基本の考え方(SUBSTITUTE を重ねる)
SUBSTITUTE の基本形はこうでした。
=SUBSTITUTE(文字列, 置き換え前, 置き換え後)
これで「1種類」の文字を置換できます。
「複数種類」を一括で置換したいときは、
“入れ子”にして順番に処理します。
例えば、A2 について
- 「(株)」→「株式会社」
- 「(有)」→「有限会社」
の2種類を同時に変えたいなら、こう書きます。
=SUBSTITUTE(SUBSTITUTE(A2, "(株)", "株式会社"), "(有)", "有限会社")
内側の SUBSTITUTE で 1種類目を変え、
その結果を外側の SUBSTITUTE に渡して 2種類目を変える、という流れです。
基本パターン1:2種類の文字を一括置換
「(株)」「(有)」を正しい会社名にそろえる
A2 に次のような値があるとします。
- 「(株)エクセル」
- 「(有)サンプル」
これを、どちらも正式表記にしたい。
=SUBSTITUTE(SUBSTITUTE(A2, "(株)", "株式会社"), "(有)", "有限会社")
この式の動きはこうです。
- 内側:
SUBSTITUTE(A2, "(株)", "株式会社")
→ 「(株)エクセル」なら「株式会社エクセル」に変わる
→ 「(有)サンプル」はそのまま(“(株)”が無いので変化なし) - 外側:
SUBSTITUTE( … , "(有)", "有限会社")
→ 1の結果に対して「(有)」を「有限会社」に変える
結果として、A2 がどちらのパターンでも
「株式会社エクセル」「有限会社サンプル」に統一できます。
基本パターン2:複数の似た記号をひとつに統一
長音記号やハイフンのばらつきを揃える
日本語データによくあるのが、
- 半角ハイフン:
- - 全角ハイフン:
- - ダッシュっぽい記号:
ーや―
がごちゃ混ぜで入っているパターンです。
全部を「半角ハイフン -」に統一したい場合は、
例えば次のように書きます(A2 に対象文字列がある場合)。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "-", "-"), "ー", "-"), "―", "-")
順番に読んでみると…
- 「全角ハイフン -」を半角
-に - 「長音 ー」を半角
-に - 「ダッシュ ―」を半角
-に
という3段階置換です。
結果として、さまざまなハイフン/線が、すべて - に統一されます。
基本パターン3:複数種類の不要文字をまとめて削除
不要な記号を全部「空文字に置換」する
SUBSTITUTE は「置き換え」なので、
置き換え後を ""(空文字)にすれば“削除”扱いになります。
例えば、A2 に
「※重要★サンプル#テスト」
のような文字列があり、
「※」「★」「#」を全部削除したい場合。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "※", ""), "★", ""), "#", "")
これで、「※」「★」「#」がすべて消えた文字列が得られます。
応用:全角→半角変換の“簡易版”として使う
本格的な全角⇔半角変換は組み込み関数だけではやや難しいですが、
よく使う記号だけピンポイントで変換するには SUBSTITUTE の多重適用が有効です。
例えば、「全角のカンマ」「全角のピリオド」「全角スペース」を
それぞれ半角にしたい場合(A2 が対象):
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",", ","), ".", "."), " ", " ")
順番に
- 全角カンマ「,」→ 半角「,」
- 全角ピリオド「.」→ 半角「.」
- 全角スペース「 」→ 半角スペース「 」
という流れです。
このあとに TRIM をかけて空白を整えるとよりきれいになります。
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",", ","), ".", "."), " ", " "))
設計のコツと注意点
置換の“順番”に気をつける
SUBSTITUTE を重ねるときの注意点は、
「先に変えた結果が、後の置換の対象になる」 ということです。
例えば、
「A → B」「B → C」を順番にやると、
元の A は最終的に C になります。
そのため、意図しない連鎖的な置換を避けたいときは、
- 「まったく別の文字同士」を置き換える
- もしくは、「まず不要なものを削除 → その後に変換」といった順番を工夫する
といった設計が大事です。
例題
問題1
A2 に「(株)エクセル」「(有)サンプル」のような文字列が入っています。
「(株)」を「株式会社」、「(有)」を「有限会社」に一括で置換する式を書いてください。
=SUBSTITUTE(SUBSTITUTE(A2, "(株)", "株式会社"), "(有)", "有限会社")
問題2
A2 にいろいろなハイフン・線が混ざった文字列が入っています。
「-」「ー」「―」をすべて半角ハイフン「-」に統一する式を書いてください。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "-", "-"), "ー", "-"), "―", "-")
問題3
A2 に「※重要★サンプル#テスト」という文字列が入っています。
この中から「※」「★」「#」をすべて削除する式を書いてください。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "※", ""), "★", ""), "#", "")
問題4
A2 に全角カンマ「,」と全角ピリオド「.」と全角スペース「 」が混ざった文字列があります。
これらをそれぞれ「,」「.」「半角スペース」に一括で置換する式を書いてください。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",", ","), ".", "."), " ", " ")
問題5
A2 の文字列について、
「全角スペースを半角スペースに変え、さらに前後や連続スペースを TRIM で整えたい」です。
SUBSTITUTE と TRIM を組み合わせた式を書いてください。
=TRIM(SUBSTITUTE(A2, " ", " "))
複数文字の一括置換の“型”は、次のようにシンプルに考えられます。
=SUBSTITUTE(SUBSTITUTE( … SUBSTITUTE(文字列, A, a) … , B, b), C, c)
「SUBSTITUTE を入れ子にして、置換したい数だけ重ねる」
この発想さえつかめれば、
略称の展開、記号の統一、不要文字の一掃など、
実務で出てくる“地味だけど面倒なテキスト整形”を、かなりの範囲で一式の関数に落とし込めるようになります。
