【Excel】SUBSTITUTE関数で特定の文字を置換!Excelの数式内テキスト編集と複数回置換の方法

【Excel】SUBSTITUTE関数で特定の文字を置換!Excelの数式内テキスト編集と複数回置換の方法
🛡️ 超解決

Excelで文字列の一部を別の文字列に置き換えたい場面は多いでしょう。例えば、住所録の表記ゆれを統一したり、商品コードの一部を変更したりする際に必要となります。しかし、単純な置換だけでは対応できないケースや、複数回置換したい場合にどうすれば良いか迷うこともあります。この記事では、ExcelのSUBSTITUTE関数を使って、文字列内の特定の文字を効率的に置換する方法を解説します。

数式内でテキストを編集する基本的な方法から、一度の関数で複数回置換を行う応用テクニックまで、具体的な手順を追って説明します。これにより、煩雑な文字列編集作業を大幅に効率化できるはずです。

【要点】SUBSTITUTE関数による文字列置換の基本と応用

  • SUBSTITUTE関数: 指定した文字列を別の文字列に置き換える基本的な関数です。
  • 数式内テキスト編集: SUBSTITUTE関数をネスト(入れ子)することで、複数回の置換を一度に行えます。
  • 置換回数の指定: SUBSTITUTE関数は、何回置換するかを任意で指定できます。

ADVERTISEMENT

SUBSTITUTE関数の基本構文と機能

SUBSTITUTE関数は、Excelで文字列を操作する際に非常に役立つ関数です。この関数を使うことで、セルの内容を直接編集することなく、数式上で特定の文字列を別の文字列に置き換えることができます。これにより、元のデータを保持したまま、加工したデータを作成することが可能です。

SUBSTITUTE関数の基本的な構文は以下の通りです。SUBSTITUTE(対象文字列, 検索文字列, 置換文字列, [置換対象])。ここで、対象文字列は置換を行いたい元の文字列が入ったセルまたは直接入力した文字列です。検索文字列は置き換えたい文字、置換文字列は置き換え後の文字を指定します。

お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

数式内での基本的な文字列置換手順

SUBSTITUTE関数を使った基本的な置換の手順を解説します。ここでは、例としてA1セルに入力された「東京都千代田区丸の内」という文字列から、「東京都」を「東京」に置き換えてみましょう。

  1. 置換結果を表示するセルを選択する
    置換後の文字列を表示したいセルを選択します。ここではB1セルを選択したとします。
  2. SUBSTITUTE関数を入力する
    選択したセル(B1)に、以下の数式を入力します。
    =SUBSTITUTE(A1, "東京都", "東京")
  3. Enterキーを押して結果を確認する
    数式を入力後、Enterキーを押すと、B1セルに「東京千代田区丸の内」と表示されます。

この例では、A1セルの「東京都」が「東京」に置き換えられました。このように、SUBSTITUTE関数は元のデータを変更せずに、数式によって加工された結果を得られる点が大きなメリットです。

特定の置換回数を指定する方法

SUBSTITUTE関数には、オプションとして[置換対象]という引数があります。この引数を使うと、検索文字列が複数存在する場合に、何番目の文字列から置換するか、あるいは何回置換するかを指定できます。この機能は、特定の条件に合致する箇所のみを置換したい場合に便利です。

例えば、「りんご、みかん、りんご、ぶどう」という文字列があり、2番目の「りんご」だけを「バナナ」に置き換えたいとします。この場合、[置換対象]に「2」を指定します。数式は以下のようになります。
=SUBSTITUTE("りんご、みかん、りんご、ぶどう", "りんご", "バナナ", 2)
この数式の結果は、「りんご、みかん、バナナ、ぶどう」となります。

もし[置換対象]を省略した場合、見つかった全ての「りんご」が「バナナ」に置き換えられます。[置換対象]に指定できるのは正の整数のみです。この引数を活用することで、より精密な文字列置換が可能になります。

ADVERTISEMENT

数式をネストして複数回置換を行う方法

ExcelのSUBSTITUTE関数を複数回連続して使用することで、一度の数式で複数の異なる文字列を置換することができます。これは、数式を入れ子にする(ネストする)というテクニックを使います。例えば、「東京都千代田区丸の内1-2-3」という文字列から、「東京都」を「東京」、「丸の内」を「Maro」に同時に置き換えたい場合などに有効です。

手順は以下の通りです。まず、最初の置換を行うSUBSTITUTE関数を作成します。次に、その関数の結果を、次のSUBSTITUTE関数の対象文字列として指定します。これを繰り返すことで、複数回の置換を実現します。

  1. 最初の置換を設定する
    A1セルに「東京都千代田区丸の内1-2-3」があるとします。「東京都」を「東京」に置き換える数式は以下のようになります。
    =SUBSTITUTE(A1, "東京都", "東京")
  2. 次の置換をネストする
    上記数式の結果(「東京千代田区丸の内1-2-3」)を、さらに「丸の内」を「Maro」に置き換えるための対象文字列として指定します。完成した数式は以下のようになります。
    =SUBSTITUTE(SUBSTITUTE(A1, "東京都", "東京"), "丸の内", "Maro")
  3. Enterキーで結果を確認する
    この数式をExcelシートに入力すると、A1セルの文字列が「東京千代田区Maro1-2-3」に変換されます。

このように、SUBSTITUTE関数をネストさせることで、複雑な文字列編集も効率的に行うことができます。置換したい項目が増えるほど、数式は長くなりますが、この方法で対応可能です。

よくある置換ミスと回避策

SUBSTITUTE関数を使用する際に、意図しない結果になったり、置換がうまくいかなかったりするケースがいくつか存在します。ここでは、よくあるミスとその回避策について解説します。

置換対象の文字列が正確でない

最も一般的なミスは、検索文字列の指定が間違っていることです。例えば、大文字・小文字の違い、全角・半角の違い、あるいは不要なスペースなどが原因で、期待通りに置換されないことがあります。ExcelのSUBSTITUTE関数は、大文字・小文字を区別します。

回避策:
置換したい文字列を正確に確認し、数式に正確に入力することが重要です。必要であれば、TRIM関数を使って前後の不要なスペースを削除したり、LOWER関数やUPPER関数を使って大文字・小文字を統一したりする前処理を検討してください。例えば、A1セルの文字列を全て小文字にしてから「tokyo」を「tokyo.city」に置換したい場合は、以下のようにします。
=SUBSTITUTE(LOWER(A1), "tokyo", "tokyo.city")

意図しない部分まで置換されてしまう

特定の文字列を置換する際に、その文字列が別の単語の一部として含まれている場合、意図せずそこまで置換されてしまうことがあります。例えば、「apple」を「orange」に置換しようとした際に、「pineapple」という単語があった場合、「pineorange」となってしまうケースです。

回避策:
このような場合は、単語の境界を考慮した置換が必要です。SUBSTITUTE関数単体では難しい場合、FIND関数やSEARCH関数と組み合わせて、特定の単語の前後にあるスペースや句読点などを検索条件に加える、あるいは正規表現(Excelの標準機能では直接サポートされていませんが、VBAなどを使えば可能)を利用することを検討する必要があります。より単純な方法としては、置換したい文字列をより具体的に指定するか、置換対象の文字列をより長いものに変更することで、誤置換を防ぐことができます。

置換対象の指定が曖昧で複数回置換してしまう

[置換対象]引数を指定し忘れる、または間違った数値を指定することで、意図した回数と異なる置換が行われることがあります。特に、同じ文字列が複数箇所に存在する場合に起こりやすいミスです。

回避策:
置換したい回数や位置を明確にし、[置換対象]引数を正しく指定することが重要です。置換したい箇所が特定できない場合は、まず置換前の文字列をよく確認し、何回、どこを置換したいのかを正確に把握してから数式を作成しましょう。必要であれば、一時的にCOUNTIF関数などで検索文字列の出現回数を確認するのも有効です。

SUBSTITUTE関数とREPLACE関数の違い

Excelには、SUBSTITUTE関数と似た機能を持つREPLACE関数があります。両者は似ていますが、動作原理が異なります。どちらを使うべきか迷う場合のために、その違いを理解しておきましょう。

SUBSTITUTE関数: 指定した検索文字列を全て、または指定した回数だけ置換文字列に置き換えます。元の文字列に含まれる検索文字列を探して置き換えるイメージです。

REPLACE関数: 指定した開始位置から、指定した文字数だけ、別の文字列に置き換えます。文字列の特定の位置から一定の長さの部分を置き換えるイメージです。構文はREPLACE(対象文字列, 開始位置, 文字数, 置換文字列)となります。

使い分けの例:

項目 SUBSTITUTE関数 REPLACE関数
例1: 「ABCDEFG」の「C」を「X」に置換 =SUBSTITUTE("ABCDEFG", "C", "X") → 「ABXDEFG」 =REPLACE("ABCDEFG", 3, 1, "X") → 「ABXDEFG」
例2: 「ABCABC」の「C」を全て「X」に置換 =SUBSTITUTE("ABCABC", "C", "X") → 「ABXABX」 =REPLACE("ABCABC", 3, 1, "X") → 「ABXABC」 (最初のCのみ置換)
例3: 「ABCABC」の3文字目から1文字を「X」に置換 (意図通りに置換するにはネストが必要) =REPLACE("ABCABC", 3, 1, "X") → 「ABXABC」

このように、特定の文字列を置き換えたい場合はSUBSTITUTE関数、文字列の特定の位置から一定の文字数を置き換えたい場合はREPLACE関数が適しています。どちらの関数も、元のデータを変更せずに数式で結果を得られる点は共通しています。

まとめ

ExcelのSUBSTITUTE関数は、文字列内の特定の文字を効率的に置換するための強力なツールです。基本的な構文を理解すれば、簡単な置換から、複数回の置換まで、様々な文字列編集に対応できます。数式をネストするテクニックを習得すれば、複雑なテキストデータも思い通りに加工できるようになるでしょう。

今回解説したSUBSTITUTE関数の使い方をマスターすることで、データの前処理や整形作業の効率が格段に向上します。さらに、REPLACE関数との違いを理解し、状況に応じて使い分けることで、より高度な文字列操作が可能になります。ぜひ、実際のデータでこれらの関数を試してみてください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】