Excel関数 逆引き集 | 大量の文字列置換 → SUBSTITUTE連鎖

Excel
スポンサーリンク

概要

大量の置換(表記ゆれや記号の統一、誤字修正など)を一気に片付ける最短手は、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」が最適解です。順序設計(長い語→短い語、限定→一般)と、全角半角の事前正規化で精度が上がります。置換表を育てながら“式は固定、辞書だけ更新”の運用に切り替えると、現場のメンテナンスが劇的に楽になります。

タイトルとURLをコピーしました