スプレッドシートのREPLACE関数の使い方|位置指定で文字列を置換する方法

スポンサーリンク

スプレッドシートで「3文字目から2文字だけ置き換えたい」と思ったことはありませんか?商品コードの一部を変更したい、電話番号の市外局番だけ差し替えたい。SUBSTITUTE関数では文字列を指定して置換しますが、「何文字目から何文字分」という位置で指定したい場面もありますよね。

REPLACE関数を使えば、位置と文字数を指定してピンポイントで置換できます。この記事ではスプレッドシートでのREPLACE関数の基本から、実務での活用パターン、FIND関数との組み合わせ応用まで丁寧に解説します。

スプレッドシートのREPLACE関数とは?位置指定で文字列を置換する関数

REPLACE関数は、文字列の中の指定した位置から指定した文字数分を別の文字に置き換える関数です。読み方は「リプレース」。英語の「Replace(置き換える)」がそのまま名前になっています。

たとえば「ABCDE」の2文字目から3文字分を「XY」に置き換えると「AXYE」になります。位置と長さで置換範囲を決めるので、置き換えたい文字の内容を知らなくても使えるのがポイントです。

基本構文と引数

=REPLACE(テキスト, 開始位置, 文字数, 新しいテキスト)
引数必須/省略可説明
テキスト必須置換対象のセルまたは文字列
開始位置必須置き換えを始める位置(1から数える)
文字数必須置き換える文字の数
新しいテキスト必須置き換え後の文字列

4つの引数はすべて必須です。SUBSTITUTE関数は省略可能な引数がありますが、REPLACE関数は1つも省略できません。

REPLACE関数の基本的な使い方

セルA2に「ABCDEFG」が入っているとします。3文字目から2文字分を「XX」に置き換えてみましょう。

=REPLACE(A2, 3, 2, "XX")  → 「ABXXEFG」

3文字目の「C」と4文字目の「D」が「XX」に置き換わりました。開始位置は1始まりなので、先頭が1、次が2と数えます。

文字数を0にすると「挿入」になる

文字数に0を指定すると、元の文字を削除せずに新しいテキストを挿入できます。

=REPLACE(A2, 3, 0, "-")  → 「AB-CDEFG」

3文字目の「C」の前にハイフンが挿入されました。文字を消さずに割り込ませたい場合に便利です。

開始位置以降をすべて置換する

文字数を大きめに指定すると、開始位置から末尾までを置き換えられます。文字数が残りの文字数を超えてもエラーにはなりません。

=REPLACE(A2, 4, 100, "XYZ")  → 「ABCXYZ」

4文字目以降の「DEFG」が「XYZ」に置き換わりました。残りが4文字なのに文字数を100にしても問題ありません。「この位置から後ろは全部変えたい」ときに使えるテクニックです。

REPLACE関数の実務活用パターン

電話番号の市外局番を置き換える

電話番号の先頭3桁(市外局番)を別の番号に差し替える例です。A2に「03-1234-5678」が入っています。

=REPLACE(A2, 1, 2, "06")  → 「06-1234-5678」

1文字目から2文字分、つまり「03」を「06」に置き換えました。市外局番の桁数が決まっているので、位置指定のREPLACE関数がぴったりです。

固定フォーマットの年度部分だけ変更する

管理番号が「2024-A001」のように「年度-連番」のフォーマットになっているとします。年度部分だけを更新する場合です。

=REPLACE(A2, 1, 4, "2025")  → 「2025-A001」

先頭4文字の「2024」を「2025」に置き換えました。連番部分はそのままなので、年度切り替え時のデータ更新が数式1つで済みます。

個人情報の一部をマスクする(伏せ字処理)

名前や電話番号の一部を「***」で隠す伏せ字処理にもREPLACE関数は役立ちます。A2に「09012345678」(携帯番号)が入っています。

=REPLACE(A2, 4, 4, "****")  → 「090****5678」

4文字目から4文字分を「****」に置き換えました。先頭3桁と末尾4桁は残しつつ、中間をマスクできます。個人情報を含む一覧を配布するときに便利ですよ。

名前の伏せ字にも使えます。A2に「山田太郎」が入っている場合です。

=REPLACE(A2, 2, 1, "○")  → 「山○太郎」

2文字目の「田」を「○」に置き換えて、苗字の一部を伏せました。

FIND関数と組み合わせて動的に位置を指定する

ここまでの例は、置き換える位置が「先頭から何文字目」と決まっているケースでした。しかし実務では、データによって位置が変わることもありますよね。

そんなときはFIND関数で位置を動的に取得してREPLACEに渡します。

メールアドレスのドメイン部分を置き換える

A2に「user@old-domain.com」が入っています。「@」より後ろを新しいドメインに差し替えたい場合です。

=REPLACE(A2, FIND("@", A2), LEN(A2) - FIND("@", A2) + 1, "@new-domain.com")

結果は「user@new-domain.com」です。ちょっとむずかしく見えますが、やっていることはシンプルです。

  1. FIND("@", A2) → 「@」の位置(5)を取得
  2. LEN(A2) - FIND("@", A2) + 1 → 「@」以降の文字数(16)を計算
  3. REPLACEで5文字目から16文字分を新ドメインに置換

FIND関数が「@」の位置を自動で調べてくれるので、ユーザー名の長さがバラバラでも正しく動作します。

区切り文字の前半だけを差し替える

A2に「ABC-12345」が入っていて、ハイフンより前の部分を「XYZ」に変えたい場合です。

=REPLACE(A2, 1, FIND("-", A2) - 1, "XYZ")  → 「XYZ-12345」

FIND("-", A2) - 1でハイフンの手前までの文字数を計算し、先頭からその分だけ置き換えています。LEFT関数で切り出して結合する方法もありますが、REPLACEなら1つの数式で完結しますよ。

REPLACE関数とSUBSTITUTE関数の使い分け

スプレッドシートの置換系関数で一番迷うのが、REPLACE関数とSUBSTITUTE関数の使い分けです。ひとことで言えば、SUBSTITUTEは「文字」で指定、REPLACEは「位置」で指定です。

比較表

項目REPLACESUBSTITUTE
置換の指定方法位置と文字数(何文字目から何文字分)文字列検索(何という文字か)
引数の数4つ(すべて必須)3〜4つ(第4引数は省略可)
複数箇所の置換1か所のみ省略で全置換、第4引数でN番目のみ
大文字/小文字区別しない(位置指定のため無関係)区別する
挿入(文字数0)可能不可
向いている場面固定フォーマット・伏せ字・位置が決まっている特定の文字を検索して全置換

どちらを使うか迷ったら

判断基準はシンプルです。

  • 置き換えたい文字の「内容」がわかっている → SUBSTITUTE
  • 置き換えたい文字の「位置」がわかっている → REPLACE

「ハイフンを全部消したい」ならSUBSTITUTEです。「3文字目から2文字を変えたい」ならREPLACEです。

実務で使う頻度はSUBSTITUTEのほうが圧倒的に高いです。REPLACEは「固定フォーマットの一部だけ変えたい」「伏せ字にしたい」など、位置が決まっている場面で活躍します。

よくあるエラーと対処法

#VALUE!エラーが出る

開始位置に0以下の数値を指定するとエラーになります。REPLACE関数の開始位置は1始まりです。

=REPLACE(A2, 0, 2, "XX")  → #VALUE!エラー
=REPLACE(A2, 1, 2, "XX")  → 正常動作

プログラミングに慣れている方は0始まりで考えがちですが、スプレッドシートの文字列関数は1始まりです。MID関数FIND関数も同じルールですよ。

開始位置が文字数を超えている

開始位置がテキストの文字数より大きいと、末尾に新しいテキストが追加されます。エラーにはなりません。

=REPLACE("ABC", 10, 2, "XY")  → 「ABCXY」

意図しない結果になるので、開始位置は元のテキストの文字数以内にしてくださいね。

空セルを渡した場合

テキストが空セルの場合、新しいテキストだけが返ります。

=REPLACE("", 1, 0, "ABC")  → 「ABC」

エラーにはなりませんが、元データが空なのに結果が出力される点に注意してください。空セルチェックにはIF関数と組み合わせると安全です。

まとめ

REPLACE関数の要点を整理します。

ポイント内容
基本構文=REPLACE(テキスト, 開始位置, 文字数, 新しいテキスト)
引数4つすべて必須
開始位置1始まり(0はエラー)
文字数0削除せず挿入として機能
文字数超過エラーにならず末尾まで置換
SUBSTITUTEとの違いSUBSTITUTE=文字指定、REPLACE=位置指定

REPLACE関数は「何文字目から何文字分」と位置で指定する置換関数です。固定フォーマットの一部変更や個人情報のマスクなど、位置が決まっている場面で大活躍します。

まずは市外局番の差し替えや伏せ字処理から試してみてください。FIND関数と組み合わせれば、位置が動的に変わるデータにも対応できるようになりますよ。

タイトルとURLをコピーしました