エクセル関数辞典 エクセル関数辞典

SUBSTITUTE・REPLACE関数|文字列の置換テクニック

SUBSTITUTE REPLACE 文字列置換 Excel関数
広告スペース (article-top)

SUBSTITUTE関数とREPLACE関数は、どちらも文字列の一部を別の文字列に置き換える関数です。SUBSTITUTE関数は指定した文字列を検索して置換し、REPLACE関数は位置を指定して置換します。用途に応じた使い分けが重要です。

各関数の基本構文

SUBSTITUTE関数

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

REPLACE関数

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

SUBSTITUTE関数の引数

引数説明必須/任意
文字列置換対象の元の文字列必須
検索文字列置き換えたい文字列必須
置換文字列置き換え後の文字列必須
置換対象何番目に出現する検索文字列を置換するか。省略するとすべて置換任意

REPLACE関数の引数

引数説明必須/任意
文字列置換対象の元の文字列必須
開始位置置換を開始する位置(1から数える)必須
文字数置換する文字数必須
置換文字列置き換え後の文字列必須

2つの関数の違い

項目SUBSTITUTEREPLACE
置換の指定方法文字列で検索位置で指定
複数箇所の置換一括置換可能1箇所のみ
検索文字列の知識必要不要(位置がわかればよい)
大文字・小文字区別する関係なし

SUBSTITUTE関数は「何を」置き換えるかがわかっている場合に使い、REPLACE関数は「どの位置」を置き換えるかがわかっている場合に使います。

実践例1:SUBSTITUTE関数で文字列を置換

電話番号のハイフンを除去する例です。

=SUBSTITUTE(A2, "-", "")

「03-1234-5678」が「0312345678」になります。置換文字列を空文字("")にすることで、削除と同じ効果が得られます。

省略された第4引数はすべての出現箇所を置換するため、2つのハイフンがまとめて除去されます。

実践例2:特定の出現箇所だけを置換

SUBSTITUTE関数の第4引数で、何番目の出現を置換するか指定できます。

「2026/06/15」の最初のスラッシュだけをハイフンに変更する場合は次のようにします。

=SUBSTITUTE(A2, "/", "-", 1)

結果は「2026-06/15」です。1番目のスラッシュだけが置換されます。

すべてのスラッシュを置換する場合は第4引数を省略します。

=SUBSTITUTE(A2, "/", "-")

結果は「2026-06-15」です。

実践例3:REPLACE関数で位置指定の置換

固定フォーマットの文字列で、特定の位置を置換する例です。

商品コード「ABC-001-XL」の中央部分(5文字目から3文字)を変更します。

=REPLACE(A2, 5, 3, "999")

結果は「ABC-999-XL」です。5文字目から3文字分を「999」に置き換えています。

実践例4:SUBSTITUTE関数のネストで複数種類の置換

複数の文字を一度に置換するには、SUBSTITUTE関数をネストします。

全角数字を半角数字に変換する例です。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2, "1", "1"), "2", "2"), "3", "3")

ネストが深くなりすぎる場合は、ASC関数(全角を半角に変換)の使用を検討してください。

=ASC(A2)

実践例5:改行の除去

セル内の改行を除去する例です。改行文字はCHAR(10)で表現します。

=SUBSTITUTE(A2, CHAR(10), " ")

改行をスペースに置き換えています。完全に除去する場合はスペースの代わりに空文字を指定します。

=SUBSTITUTE(A2, CHAR(10), "")

Windowsの場合、キャリッジリターンCHAR(13)も含まれていることがあります。両方を処理する場合は次のようにします。

=SUBSTITUTE(SUBSTITUTE(A2, CHAR(13), ""), CHAR(10), "")

よくあるエラーと対処法

置換されない(SUBSTITUTE関数)

SUBSTITUTE関数は大文字と小文字を区別します。「abc」を検索しても「ABC」は置換されません。

大文字・小文字を区別せずに置換したい場合は、以下のような工夫が必要です。

# UPPERで統一してから比較する方法は直接使えないため、
# 段階的に処理する
=SUBSTITUTE(SUBSTITUTE(A2, "abc", "xyz"), "ABC", "xyz")

#VALUE!エラー(REPLACE関数)

開始位置が0以下の場合や、文字数に負の値を指定した場合に発生します。

意図しない箇所の置換

SUBSTITUTE関数は部分一致で置換するため、意図しない箇所まで置換されることがあります。

# 「日」を「日曜」に置換したいが、「日本」の「日」も置換される
=SUBSTITUTE(A2, "日", "日曜")
# "日本の日" → "日曜本の日曜"

このような場合は、REPLACE関数で位置を指定して置換するか、前後の文字を含めて検索文字列を指定します。

SUBSTITUTE関数の便利なテクニック

特定の文字の出現回数を数える

SUBSTITUTE関数とLEN関数を組み合わせて、特定の文字の出現回数を求められます。

=(LEN(A2) - LEN(SUBSTITUTE(A2, ",", ""))) / LEN(",")

元の文字列の長さから、カンマを除去した文字列の長さを引くことで、カンマの数を計算しています。

n番目の区切り文字の位置を求める

SUBSTITUTE関数とFIND関数を組み合わせて、n番目の区切り文字の位置を求められます。

=FIND("@", SUBSTITUTE(A2, ",", "@", 3))

3番目のカンマを一時的に別の文字(@)に置き換えてから、その位置をFIND関数で求めています。

Google スプレッドシートでの互換性

SUBSTITUTE関数とREPLACE関数はGoogle スプレッドシートでも同じ構文で利用できます。大文字・小文字の区別やCHAR関数の動作も同一です。Google スプレッドシートにはREGEXREPLACE関数という正規表現での置換が可能な関数もあり、複雑なパターンの置換に便利です。

まとめ

SUBSTITUTE関数とREPLACE関数は文字列置換の基本関数です。

  • SUBSTITUTE関数は文字列を検索して置換する(複数箇所の一括置換が可能)
  • REPLACE関数は位置を指定して置換する
  • SUBSTITUTE関数は大文字・小文字を区別する
  • ネストすることで複数種類の文字を順番に置換できる
  • 改行の除去にはCHAR(10)をSUBSTITUTE関数で処理する

データクレンジングや書式の統一など、実務で欠かせない関数です。目的に応じて2つの関数を使い分けてください。

広告スペース (article-bottom)

あわせて読みたい