「わからない」を「わかった」に変えるブログ

Excel文字列の置換は SUBSTITUTE 関数を使う。REPLACE 関数は使えない!

更新日:
文字列全体に対して複数の置換を行いたいなら REPLACE ではなく SUBSTITUTE 関数を使おう

文字列の置換関数として、真っ先に思い浮かぶのは REPLACE 関数です。しかし Excel の REPLACE 関数は、Java などのプログラム言語のそれとは動きが異なり、思っているような置換処理をしてくれません。

例えば次のような文字列

明日は彼女の誕生日。早く明日にならないかな。」

この「明日」を「明後日」にする場合、REPLACE 関数は使えません。ある特定の文字列を、別の文字へ完全に置き換える場合は、SUBSTITUTE 関数を利用します。

REPLACE 関数と SUBSTITUTE 関数の違い

関数用途
REPLACE文字列内の指定範囲(X文字目からY文字目)を、置換したい文字に変換する
SUBSTITUTE文字列内の指定条件の文字を、置換したい文字に変換する

簡単に説明すると、REPLACE 関数はそもそも置換するための文字列条件を持っていません。そして SUBSTITUTE 関数の場合は、条件に一致する文字列を別の文字列に置き換える機能を持っています。

REPLACE 関数の利用例

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

文字列の中身に関係なく置換をしたい場合に利用します。例えば、次の表をご覧ください。

REPLACE関数検証用データ

1桁目から3桁目のアルファベットを一律「XYZ」に変更する場合、次のように REPLACE 関数を使います。

特定の場所の文字を置き換える REPLACE 関数

引数の設定値を読み解くと、A2 セルの文字列の 1文字目から 3文字目までを、"XYZ" へ置き換える処理です。

他の行も同様に REPLACE 関数を仕込むと、同じように置換処理が行われます。実際に関数で処理した結果がこちら。

文字列の内容に関係なく置換されるREPLACE関数の結果

置換元の文字列が ABC だろうが、CCD だろうが関係なく XYZ へ置換しています。

置換元の文字列の内容に依存せずに置換処理を行うのが REPLACE 関数の特徴です。

SUBSTITUTE 関数の利用例

SUBSTITUTE( 文字列, 検索文字列, 置換文字列, [置換対象] )

文字列内にある、特定の文字 (列) を置換したい場合に利用します。先ほどと同じ表を例に説明します。

SUBSTITUTE関数検証用データ

このコード内の文字「CD」を全て「ZZZ」に変更するように SUBSTITUTE 関数を仕掛けます。

特定の文字列を置換するSUBSTITUTE関数の利用例

引数の設定値を読み解くと、A10 セルの文字列内にある文字列 "CD" を全て "ZZZ" へ置き換える処理です。

他の行も同様に SUBSTITUE 関数を指定します。実際に関数で処理した結果がこちら。

特定の文字列を置換するSUBSTITUTE関数で置換した結果

文字列 "CD" を全て "ZZZ" へ置き換えています。A10 や A13 セルのように "CD" が2ヶ所含まれる場合は、それぞれ "ZZZ" へ置換される仕組みです。

また上記の例では利用していませんが、SUBSTITUTE 関数にはもう一つ引数 (省略可) が設定できます。一番最後に付け加える引数で、何番目に検索がヒットした文字を変換するか置換対象を指定できます。

わかりやすく、こちらも関数を設定して結果を確認します。

置換対象を追加した SUBSTITUTE 関数の実行結果

B10 に仕掛けた関数は、次のような内容です。

A10 セルの文字列内にある文字列 "CD" を "ZZZ" へ置き換えますが、処置換対象は 2 番目にヒットした文字列のみ。

つまり同じ文字列内の2回目に登場した "CD" だけが "ZZZ" に置換されています。この条件に当てはまるのが、10行目と13行目のデータです。

置換元の文字列に対して、指定した文字列の条件を基に置換処理を行うのが SUBSTITUTE 関数の特徴です。

まとめ

以上、REPLACE 関数と SUBSTITUTE 関数の違いでした。

  • REPLACE : 文字列の内容に関係なく、指定した位置の文字列を置換する
  • SUBSTITUTE : 文字列の内容に対し、検索条件により置換する

これら関数の違いを覚えて、用途に応じて使いこなせるようになりましょう。

\ この記事をシェアする /