【EXCEL | REPLACE関数】文字列内の指定の位置にある文字列を置換する

スポンサーリンク

文字列内の指定の位置にある文字列を置換する

REPLACE関数

構文

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

  • 対象文字列…置換の対象となる文字列
  • 置換開始位置…置換を開始する文字の位置を指定(対象文字列の先頭文字が1)
  • 置換文字数…置換開始位置から何文字置換するか指定
  • 置換文字列…置換開始位置から置換文字数で指定した文字と置換する文字列


EXCELで文字列の置換は、このREPLACE関数とSUBSTITUTE関数が用意されていますが、REPLACE関数は置換対象を文字列の位置(場所)で指定します。

置換したい対象の文字が決まっていないが、場所は特定できる場合などに使えます。

SUBSTITUTE関数は、置換対象の文字を指定して置換えますので、場所は特定出来ないけど文字は特定出来ている場合に使えます。


サンプル

やってみましょう。

A1セルに「ひらちんの部屋」と入力されているシートを用意しました。B1セルにREPLACE関数を使って、文字列を置換えた文字を表示させます。

まずは基本形から。”ひらちん”を”たろう”に置換えます。

B2セルに次の数式を入力します。

=REPLACE(A1, 1, 4, "たろう")

Enterで確定します。

対象文字列はA1セルにあるので、セル参照で指定しています。

”ひらちん”は1番目にあるので、置換開始位置は”1”です。

”ひらちん”は4文字なので、置換文字数は”4”、

そして置換文字列は”たろう”ですね。

B2セルには、”たろうの部屋”と表示されました。

指定の場所の指定の文字数を削除する

ちょっと工夫すると次のようなことも出来るようになります。

サンプル

「-」で繋がれたアルファベットと数字の文字列です。

後ろの数字だけ使いたい場合など、アルファベットの部分を消したいこととかありますよね。

SUBSTITUTE関数がワイルドカード文字列が使えれば、サクッといけそうですが、SUBSTITUTE関数はワイルドカード使えないんですよね。。。

ということで、REPLACE関数と他の関数を組み合わせて実現したいと思います!

今分かっていることで数式を組み立てると、

=REPLACE(A1, 1, ?, "")

ですかね。

対象文字列は’A1’

置換開始位置は一番左なので’1’

置換文字数は、分からないですね。

置換文字列は削除したいので、「””」で指定します。

つまり、置換文字数を他の数式で算出できれば実現出来そうです。

今回は、「-」までを削除したいので、「-」までの文字数が分かれば良いですね(^o^)

「指定の文字列が別の文字列のどこにあるか確認する」には、FIND関数が使えます。

対象文字列(A1)の中で、「-」が何番目にあるかという数式は次です。

FIND("-", A1 )

FIND関数の説明はリンクを確認して下さい。

この数式を、先程のREPLACE関数の「?」の部分(画像だと、「ココを他の関数で指定」のところ)に入れて組み合わせます。

=REPLACE(A1, 1,FIND("-", A1), "")

Enterで確定すると、

「-」まで削除することが出来ましたね(^o^)

B2・B3も上手くいくでしょうか。

数式をコピーします。

上手く行きましたね(^o^)

このように、他の関数と組み合わせることでやりたいことを実現出来ます!

特に、文字列を操作する関数は他の関数と組み合わせることが多いです。

文字列内の指定の位置に文字を挿入する

これはちょっとしたテクニックですが、置換文字数を”0”で指定すると、置換開始位置で指定した場所に、置換文字列を挿入することも出来ます。

サンプル

最初の3文字がアルファベット、後が数字の文字列の最初の3文字の後に「-」を入れる。

ということをやってみます。

B2セルに次の数式を入力します。

=REPLACE(A1, 4, 0, "-")

対象文字列はA1セル、開始文字位置はABCの次にしたいので、’4’として下さい。

置換文字数は、置換はしないので’0’と入れます。

置換文字列に’-’を指定することで、4番目から0文字を「-」に置換する

つまり、4番目に「-」を挿入することが出来ます。

Enterで数式確定すると次のようになります。

B2セルにも数式をコピーします。

これで完成(^o^)

まとめ

文字列の置き換えは、EXCELの機能である「検索と置換」も使えます。

ただ、この場合元の文字列を変更してしまうので、元のデータは残しときたい場合に不向きです。

データ扱う上では元のデータはなるべく変更しないことが鉄則かと思いますし、この検索と置換の機能では、文字の位置を特定して置換する方法は使えませんので、関数もしっかり勉強しましょう!