EXCELのSUBSTITUTE関数とREPLAC関数の違いと使いわけ

EXCELのSUBSTITUTE関数とREPLAC関数の違いと使いわけ

本記事はSUBSTITUTE関数とREPLACE関数の違いと使い分けを解説します。

両関数とも、置換の機能を持つ関数です。

Microsoft Excelの「文字列操作関数」のカテゴリに属します。

SUBSTITUTEとREPLACの違い

EXCEL関数のREPLACEとSUBSTITUTEの違いは主に2つを意識してください。

SUBSTITUTE関数での置換は文字列、REPLACEでの置換は文字数を指定する

両関数とも同じ結果ですが、SUBSTITUTE関数は文字列、REPLACEは文字数を指定しています。

=SUBSTITUTE(“I love apple pie”, “apple”, “BANANA”)

“I love BANANA pie” を返します。

=REPLACE(“I love apple pie”, 8, 5, “BANANA”)

SUBSTITUTE関数での置換は大文字と小文字を区別する、REPLACEは大文字と小文字を区別しない

SUBSTITUTE関数は特定の文字列を探してそれを置き換えるため、大文字小文字を区別します。
例えば、”Apple” と “apple” は異なる文字として扱われます。

これに対して、
REPLACE関数は指定された位置と文字数に基づいて置換を行うため、大文字小文字の区別は影響しません

SUBSTITUTE(“I love Apple pie”, “Apple”, “BANANA”)

“I love BANANA pie” を返します。”apple” は大文字のため置換されません。

しかし、

SUBSTITUTE(“I love apple pie”, “Apple”, “BANANA”)

” I love apple pie” を返します。”apple” は小文字のため置換されません。

REPLACE(“I love Apple pie”, 8, 5, “BANANA”)

REPLACE(“I love apple pie”, 8, 5, “BANANA”)

“I love BANANA pie” を返します。大文字小文字問わず、置換されます。



SUBSTITUTEとREPLACEの使い分け

SUBSTITUTE関数が文字列で置換したい時、REPLACE関数が文字数を指定して置換したい時に使われます。
ほとんどの置換操作はSUBSTITUTE関数で対応できます。

SUBSTITUTE関数がメイン使いで、REPLACE関数がサブ使いでOKと考えています。
これは、文字列を置換するケースが多いことが一般的だからです。

SUBSTITUTE関数を使うシーン

SUBSTITUTE関数が特に有効なシーンが多いです。
直感的に文字列を置換できます。

いくつか例を挙げます。

パターン1: 単純な文字列置換

=SUBSTITUTE(“私はりんごパイが好きです”, “りんご”, “バナナ”)
// “私はバナナパイが好きです” を返します。

パターン2: 複数の同じ文字列を置換

=SUBSTITUTE(“私はりんごパイとりんごジュースが好きです”, “りんご”, “バナナ”)
// “私はバナナパイとバナナジュースが好きです” を返します。

パターン3: 置換対象の特定インスタンスのみ置換

=SUBSTITUTE(“私はりんごパイとりんごジュースが好きです”, “りんご”, “バナナ”, 2)
// “私はりんごパイとバナナジュースが好きです” を返します。

REPLACE関数を使うシーン

REPLACE関数は文字数を指定するため、SUBSTITUTE関数に比べ、直感的ではありません

=SUBSTITUTE(“私はりんごパイが好きです”, “りんご”, “バナナ”) // “私はバナナパイが好きです” を返します。
// “私はバナナパイが好きです” を返します。

=REPLACE(“私はりんごパイが好きです”, 4, 3, “バナナ”) // “私はバナナパイが好きです” を返します。
// “私はバナナパイが好きです” を返します。

特に有効な場合は少なく、主に特殊なケースで使用されます。
いつくか例を挙げます。

例1: 日付フォーマットの変更

日付が「YYYYMMDD」の形式で入力されている場合、「YYYY-MM-DD」に変換する必要がある場合、
REPLACEでの置換のみ役立ちます。

SUBSTITUTE関数は、以下のような一意の置換しかできないからです。

元の文字列: 20240624
変換後の形式: 2024-06-24

REPLACE関数を使用:

=REPLACE(REPLACE(“20240624”, 5, 0, “-“), 8, 0, “-“)
// “2024-06-24” を返します。

SUBSTITUTEを使用:

=SUBSTITUTE(SUBSTITUTE(“20240624”, “0624”, “06-24”), “202406”, “2024-06”)
// “2024-06-24” を返します。

例2: クレジットカード番号の一部をマスク

クレジットカード番号 1234-5678-9012-3456 の中央部分を **** に置換する場合、
REPLACE関数の方が直感的です。

REPLACEを使用:

=REPLACE(“1234-5678-9012-3456”, 6, 4, ““)
// “1234-****-9012-3456″ を返します。

SUBSTITUTEを使用:

=SUBSTITUTE(“1234-5678-9012-3456”, MID(“1234-5678-9012-3456”, 6, 4), ““)
// “1234-****-9012-3456″ を返します。

フォローアップ

関数の構文

各詳細はこちらとこちらの別記事を拝読ください。


=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象]) ※[]は省略可能です

指定した文字列内の検索文字列置換文字列SUBSTITUTE(置換)する機能を持っています。


文字列: 置換対象の文字列

検索文字列: 置換する文字列

置換文字列: 置換後の文字列

[置換対象]: (省略可能)置換するインスタンスの番号


=REPLACE(文字列, 開始位置, 文字数, 置換文字列)

指定した文字列開始位置から文字数分の範囲を置換文字列で置き換える機能を持っています。


文字列: 置換対象となる文字列

開始位置: 置換を開始する位置(1から始まる)

文字数: 置換する文字数

置換文字列: 置換後の文字列


ダブルクォーテーション

文字列の場合は、ダブルクォーテーション(”)で囲みます。

まとめ

SUBSTITUTE関数は、文字列を置換する場合に主に使用するのが良いでしょう。
特定の文字列を置換するため、直感的で多くの実務に適しています。

REPLACE関数は、特定の位置や文字数を基に置換する場合に便利であり、
特殊なケースで使用されます。

ほとんどの置換操作にはSUBSTITUTE関数が推奨され、特殊なケースではREPLACE関数を検討

してください。

こんな時に便利!

SUBSTITUTE関数を使わない場合、
手動で文字列を修正する必要があり、時間がかかる上にミスが発生しやすくなります。

SUBSTITUTEを使うと、文字列内の特定のパターンやキーワードを簡単に一括で置換できます。

例えば、ある文章の中で「犬」を「猫」に一括で置き換えられます

SUBSTITUTE関数の使用イメージ

SUBSTITUTE関数の機能と構文

機能

[関数の挿入ダイアログ]から見るSUBSTITUTE関数の機能説明

[関数の検索]のテキスト内に、
「SUBSTITUTE」と入力し、[検索開始]をクリックすると、関数がヒットします。
詳細の使用法に興味のある方はタブ[参考記事]をご拝読ください。

文字列中の指定した文字を新しい文字で置き換えます。

[関数の挿入]ダイアログより

指定された文字列内のテキストを別のテキストで置換する機能を持っています。
この関数は、例えば文書内の特定の言葉を別の言葉に一括で置換する際に非常に役立ちます。

SUBSTITUTE関数は、指定した文字列を新しい文字列に置換できる関数です。

“SUBSTITUTE”は「代替する」から来ており、
代替する」→「置換」を意味します。

構文

[関数の引数]ダイアログボックスから見るSUBSTITUTE関数の構文

=SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象]) ※[]は省略可能です

指定した文字列内の検索文字列置換文字列SUBSTITUTE(置換)する機能を持っています。

置換対象は、文字列内で検索文字列が複数回ヒットした場合の挙動に対する設定を行います。

第1引数:文字列

SUBSTITUTE関数の構文,[関数引数]ダイアログボックス,第1引数:文字列

文字列 には置き換える文字を含む文字列、または目的の文字列が入力されたセル参照を指定します。

[関数の引数]のダイアログボックスより

第1引数には、置換対象となる元の文字列を指定します。この文字列はセル参照や直接入力が可能です。

第2引数:検索文字列

SUBSTITUTE関数の構文,[関数引数]ダイアログボックス,第2引数:開始位置

検索文字列 には置き換え前の文字列を指定します。検索文字列と置換文字列の大文字小文字の表記が異なる場合、文字列は置換されません。

[関数の引数]のダイアログボックスより

第2引数には、置換を開始する位置を指定します。これは元の文字列内の開始位置を示します。

元の文字列内で置換したい部分、つまり置換の対象となる文字列(≒検索文字列)を指定します。

置換の対象を検索するから、検索文字列なんだよ

第3引数:置換文字列

SUBSTITUTE関数の構文,[関数引数]ダイアログボックス,第3引数:文字数

置換文字列 には置き換え後の文字列を指定します。

[関数の引数]のダイアログボックスより

第3引数には、置換文字列を指定します。
検索文字列を検索して置き換える新しい文字列を指定します。

第4引数:置換対象

SUBSTITUTE関数の構文,[関数引数]ダイアログボックス,第4引数:置換文字列

置換対象 には文字列に含まれるどの検索文字列を置換文字列に置き換えるかを指定します。
省略された場合は、文字列中のすべての検索文字列が置き換えの対象となります。

[関数の引数]のダイアログボックスより

上記の通りですが、改めて下記にもまとめています。



置換対象を指定した場合:

検索文字列文字列内に複数回出現する場合、置換対象に指定した数値に一致する順番の出現のみを置換します。
例えば、3を指定すれば3番目に出現する検索文字列のみが置換されます。

置換対象を指定しない場合:

置換対象を指定しない場合検索文字列に一致するすべての部分が置換文字列に置換されます。


SUBSTITUTE関数の使用例

今回は、「私の犬はとても賢く、犬は家族の一員です」という文を使用します。

文中の「犬」を「猫」に置き換える例です。

さらに、第4引数を省略した場合と指定した場合の違いを示します。

第4引数を省略すると文中の全ての「犬」が「猫」に置き換わりますが、
指定することで特定の「犬」だけを対象とする置換が可能になります。

基本操作

A2セルに「私の犬はとても賢く、犬は家族の一員です」が入力されています。

第4引数を省略した場合

関数式:

=SUBSTITUTE(“私の犬はとても賢く、犬は家族の一員です。”, “犬”, “猫”)

この例では、第4引数を省略しているため、
文中に出現する「犬」という単語すべてが「猫」に置き換えられます。

戻り値:

私の猫はとても賢く、猫は家族の一員です。

[関数の引数]ダイアログボックス:

[関数の挿入]ダイアログボックスによる、第4引数を省略した場合のSUBSTITUTE関数の引数入力結果

第4引数を指定した場合(第2の「犬」のみを置き換える)

関数式:

=SUBSTITUTE(“私の犬はとても賢く、犬は家族の一員です。”, “犬”, “猫”, 2)

“”この例では、第4引数を省略しているため、
文中に出現する「犬」という単語すべてが「猫」に置き換えられます。”この例では、第4引数を省略しているため、
文中に出現する「犬」という単語すべてが「猫」に置き換えられます。

戻り値:

私の猫はとても賢く、猫は家族の一員です。

[関数の引数]ダイアログボックス:

[関数の挿入]ダイアログボックスによる、第4引数を指定した場合のSUBSTITUTE関数の引数入力結果

文字列の場合は、ダブルクォーテーション(”)で囲みます。

最後に

SUBSTITUTEは「代替する」から来ており、「代替する」→「置換」を意味します。

指定された文字列内のテキストを別のテキストで置換する機能を持っています。
この関数は、例えば文書内の特定の言葉を別の言葉に一括で置換する際に非常に役立ちます。

また、ExcelのREPLACE関数は、EXCEL 365、EXCEL 2016以降で利用可能です。

文字列を効率的に変更したい時に、この記事を参考にしてください。

空白を削除するには、置換文字列を「””」にします。
つまり、空白を空の文字列に置換するという考え方です。


参考記事

Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。

構文に関する記事

Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。

ダイアログボックスの使い方に関する記事

Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。

参照形式に関する記事

関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。