Excel関数 逆引き集 | 複数文字を一括置換 → SUBSTITUTE

Excel
スポンサーリンク

概要

「’(株)’ を ‘株式会社’ に、’(有)’ を ‘有限会社’ に一気に変えたい」
「’-’ と ‘ー’ と ‘―’ を全部 ‘ – ‘ に統一したい」
「全角の記号を全部半角にしたい」

こういう “複数種類の文字を、一括で置換したい” ときに使うのが
SUBSTITUTE を“重ねて使う”テクニックです。

Excel には「一発で複数パターンを置換する専用関数」はないので、
SUBSTITUTE を入れ子にして、順番に置換していくのが定番パターンになります。


基本の考え方(SUBSTITUTE を重ねる)

SUBSTITUTE の基本形はこうでした。

=SUBSTITUTE(文字列, 置き換え前, 置き換え後)

これで「1種類」の文字を置換できます。

「複数種類」を一括で置換したいときは、
“入れ子”にして順番に処理します。

例えば、A2 について

  • 「(株)」→「株式会社」
  • 「(有)」→「有限会社」

の2種類を同時に変えたいなら、こう書きます。

=SUBSTITUTE(SUBSTITUTE(A2, "(株)", "株式会社"), "(有)", "有限会社")

内側の SUBSTITUTE で 1種類目を変え、
その結果を外側の SUBSTITUTE に渡して 2種類目を変える、という流れです。


基本パターン1:2種類の文字を一括置換

「(株)」「(有)」を正しい会社名にそろえる

A2 に次のような値があるとします。

  • 「(株)エクセル」
  • 「(有)サンプル」

これを、どちらも正式表記にしたい。

=SUBSTITUTE(SUBSTITUTE(A2, "(株)", "株式会社"), "(有)", "有限会社")

この式の動きはこうです。

  1. 内側:SUBSTITUTE(A2, "(株)", "株式会社")
    → 「(株)エクセル」なら「株式会社エクセル」に変わる
    → 「(有)サンプル」はそのまま(“(株)”が無いので変化なし)
  2. 外側:SUBSTITUTE( … , "(有)", "有限会社")
    → 1の結果に対して「(有)」を「有限会社」に変える

結果として、A2 がどちらのパターンでも
「株式会社エクセル」「有限会社サンプル」に統一できます。


基本パターン2:複数の似た記号をひとつに統一

長音記号やハイフンのばらつきを揃える

日本語データによくあるのが、

  • 半角ハイフン:-
  • 全角ハイフン:
  • ダッシュっぽい記号:

がごちゃ混ぜで入っているパターンです。

全部を「半角ハイフン -」に統一したい場合は、
例えば次のように書きます(A2 に対象文字列がある場合)。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "-", "-"), "ー", "-"), "―", "-")

順番に読んでみると…

  1. 「全角ハイフン -」を半角 -
  2. 「長音 ー」を半角 -
  3. 「ダッシュ ―」を半角 -

という3段階置換です。

結果として、さまざまなハイフン/線が、すべて - に統一されます。


基本パターン3:複数種類の不要文字をまとめて削除

不要な記号を全部「空文字に置換」する

SUBSTITUTE は「置き換え」なので、
置き換え後を ""(空文字)にすれば“削除”扱いになります。

例えば、A2 に

「※重要★サンプル#テスト」

のような文字列があり、
「※」「★」「#」を全部削除したい場合。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "※", ""), "★", ""), "#", "")

これで、「※」「★」「#」がすべて消えた文字列が得られます。


応用:全角→半角変換の“簡易版”として使う

本格的な全角⇔半角変換は組み込み関数だけではやや難しいですが、
よく使う記号だけピンポイントで変換するには SUBSTITUTE の多重適用が有効です。

例えば、「全角のカンマ」「全角のピリオド」「全角スペース」を
それぞれ半角にしたい場合(A2 が対象):

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, ",", ","), ".", "."), " ", " ")

順番に

  1. 全角カンマ「,」→ 半角「,」
  2. 全角ピリオド「.」→ 半角「.」
  3. 全角スペース「 」→ 半角スペース「 」

という流れです。

このあとに 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 を入れ子にして、置換したい数だけ重ねる」
この発想さえつかめれば、
略称の展開、記号の統一、不要文字の一掃など、
実務で出てくる“地味だけど面倒なテキスト整形”を、かなりの範囲で一式の関数に落とし込めるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました