概要
大量の置換(表記ゆれや記号の統一、誤字修正など)を一気に片付ける最短手は、SUBSTITUTEの“連鎖”です。個別の置換を入れ子にして順番に適用すれば、1セルで複数の変換を完了できます。Microsoft 365なら、置換表(辞書)をREDUCEやMAPで回し、管理しやすいテンプレートにもできます。
基本の使い方
入れ子で順番に置換する
=SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(A2," "," "), // 全角スペース→半角
"㈱","(株)"), // 会社表記統一
"-","-") // 全角ハイフン→半角
左から右へ適用されます。置換の順番が結果に影響するため、衝突しない順で並べるのがコツです。
何番目だけを置換(第4引数)
=SUBSTITUTE(A2,"-","/",2) // 2番目の「-」だけ「/」に
全件ではなく“n番目だけ”差し替えたいときに使います。
具体例
表記ゆれの一括是正(スペース・記号・カッコ)
=SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(TRIM(A2)," "," "),
"(","("),
")",")"),
"・","/")
- 余分な空白を削除(TRIM)
- 全角スペース→半角
- 全角カッコ→半角
- 中黒→スラッシュ
住所の正規化(丁目・番地の表記統一)
=SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(A2,"ー","-"),
"-","-"),
"丁目","-")
長音記号や全角ハイフンを半角に統一し、「丁目」をハイフンに変換します。
電話表記の記号を除去してクリーン化
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"-",""),"(",""),")","")
ハイフンや括弧を削除して“数字だけ”の文字列にします(数値化はVALUEと併用)。
応用テンプレート
置換辞書で一括処理(LET+REDUCE:Microsoft 365)
=LET(
txt, A2,
from, {" ","(",")","ー","-","・","㈱"},
to, {" ","("," )","-","-","/","(株)"},
REDUCE(txt, SEQUENCE(ROWS(from)), LAMBDA(acc,i, SUBSTITUTE(acc, INDEX(from,i), INDEX(to,i))))
)
- 置換の“元”と“先”を配列で管理
- REDUCEで左から順に適用
- 置換表だけ更新すれば式は固定のまま
TSV/CSVで置換表を持つ(柔軟に管理)
=LET(
txt, A2,
from, TEXTSPLIT(H2, ","),
to, TEXTSPLIT(I2, ","),
REDUCE(txt, SEQUENCE(ROWS(from)), LAMBDA(acc,i, SUBSTITUTE(acc, INDEX(from,i), INDEX(to,i))))
)
H2とI2に「元語,元語,…」「先語,先語,…」を入れて差し替えます。
大文字小文字を無視して置換(正規化→置換)
=LET(
t, LOWER(A2),
SUBSTITUTE(SUBSTITUTE(t,"colour","color"),"organisation","organization")
)
LOWER/UPPERで正規化してから置換すると大小混在でも安定します。
よくあるつまずきと対策
置換順の衝突
「ab→a」「a→x」のように“後の置換が前の結果に再度ヒット”することがあります。大きい単位(長い語)から短い語へ、限定的なパターンから一般的なパターンへ、の順で並べると安全です。
“語全体”だけ置換したい
SUBSTITUTEは部分一致です。語境界を疑似的に作り、前後に区切り文字を一時挿入して限定する方法が現実的です(例:「 空白word空白 」だけ対象)。厳密な正規表現はExcel標準にはありません。
全角・半角・類似記号の混在
似た見た目でも別文字です。ASC/JISで全角半角を統一してからSUBSTITUTEすると抜け漏れが減ります。
パフォーマンス
入れ子が多いと重くなります。辞書方式(REDUCE)で管理し、不要な置換を減らす、TRIM/CLEANなどは先頭で1回だけにするなど工夫しましょう。
例題
問題1: A2の文字列から「全角スペース→半角」「全角カッコ→半角」「中黒→スラッシュ」を順に適用してB2に表示してください。
解答例:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(A2)," "," "), "(","("), "・","/")
問題2: C2の住所テキストで「ー」「-」を半角の「-」に統一し、「丁目」を「-」に置き換えてD2に表示してください。
解答例:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C2,"ー","-"),"-","-"),"丁目","-")
問題3: E2の電話表記から「-」「(」「)」を除去して“数字だけ”の文字列をF2に表示してください。
解答例:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"-",""),"(",""),")","")
問題4: G2の文章で「colour」→「color」、「organisation」→「organization」を大小混在でも確実に置換してH2に表示してください。
解答例:
=LET(t,LOWER(G2), SUBSTITUTE(SUBSTITUTE(t,"colour","color"),"organisation","organization"))
問題5: I2のテキストに、H2の「元語一覧(カンマ区切り)」とI2の「先語一覧(カンマ区切り)」を辞書として適用し、J2に一括置換結果を表示してください。
解答例:
=LET(
txt, I2,
from, TEXTSPLIT(H2,","),
to, TEXTSPLIT(I2,","),
REDUCE(txt, SEQUENCE(ROWS(from)), LAMBDA(acc,i, SUBSTITUTE(acc, INDEX(from,i), INDEX(to,i))))
)
まとめ
大量置換は「SUBSTITUTEの連鎖」が基本、管理性を高めるなら「辞書+REDUCE」が最適解です。順序設計(長い語→短い語、限定→一般)と、全角半角の事前正規化で精度が上がります。置換表を育てながら“式は固定、辞書だけ更新”の運用に切り替えると、現場のメンテナンスが劇的に楽になります。
