文字列内の指定の位置にある文字列を置換する
REPLACE関数
=REPLACE(対象文字列, 置換開始位置, 置換文字数, 置換文字列)
- 対象文字列…置換の対象となる文字列
- 置換開始位置…置換を開始する文字の位置を指定(対象文字列の先頭文字が1)
- 置換文字数…置換開始位置から何文字置換するか指定
- 置換文字列…置換開始位置から置換文字数で指定した文字と置換する文字列
スプレッドシートで文字列の置換は、このREPLACE関数とSUBSTITUTE関数が用意されていますが、REPLACE関数は置換対象を文字列の位置(場所)で指定します。
置換したい対象の文字が決まっていないが、場所は特定できる場合などに使えます。
SUBSTITUTE関数は、置換対象の文字を指定して置換えますので、場所は特定出来ないけど文字は特定出来ている場合に使えます。
サンプル
やってみましょう。
A1セルに「ひらちんの部屋」と入力されているシートを用意しました。B1セルにREPLACE関数を使って、文字列を置換えた文字を表示させます。

まずは基本形から。”ひらちん”を”たろう”に置換えます。
B1セルに次の数式を入力します。
=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文字の後に「-」を入れる。
ということをやってみます。
B1セルに次の数式を入力します。
=REPLACE(A1, 4, 0, “-“)

対象文字列はA1セル、開始文字位置はABCの次にしたいので、’4’として下さい。
置換文字数は、置換はしないので’0’と入れます。
置換文字列に’-’を指定することで、4番目から0文字を「-」に置換する
つまり、4番目に「-」を挿入することが出来ます。
Enterで数式確定すると次のようになります。

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

これで完成(^o^)
まとめ
文字列の置き換えは、スプレッドシートの機能である「検索と置換」も使えます。
ただ、この場合元の文字列を変更してしまうので、元のデータは残しときたい場合に不向きです。
データ扱う上では元のデータはなるべく変更しないことが鉄則かと思いますし、この検索と置換の機能では、文字の位置を特定して置換する方法は使えませんので、関数もしっかり勉強しましょう!
コメント