Replace関数:文字列の中の指定した部分文字列を別の文字列に置換する

Replace 関数は Excel VBA で用意されている関数の一つで、引数に指定した文字列の中の指定の部分文字列を別の文字列に置換します。置き換える文字列を空文字にすることで指定の部分文字列を削除することもできます。ここでは Excel VBA における Replace 関数の使い方について解説します。

(Last modified: )

Replace関数の定義と使い方

Replace 関数は引数に指定した文字列の中の指定した部分文字列を別の文字列に置換し、置換後の文字列を返します。

Replace(expression,find,replace)

1 番目の引数に置換の対象となる文字列を指定します。 2 番目の引数に置換を行う部分文字列を指定します。 3 番目の引数に置き換える文字列を指定します。戻り値として置換を行ったあとの文字列を返します。

次の例を見てください。

Debug.Print Replace("赤青緑青黄青赤", "青", "白")  '赤白緑白黄白赤

Replace 関数の 1 番目の引数に指定した文字列の中の "青" をすべて "白" に置換するので、結果として "赤白緑白黄白赤" がイミディエイトウィンドウに出力されます。

置換後に返される文字列の開始位置

省略可能な 4 番目の引数には置換後に返される文字列の開始位置を指定することができます。デフォルトの値は 1 です。例えば 2 を指定した場合、置換後の文字列の 2 番目の文字以降を返します。

次の例を見てください。

Debug.Print Replace("赤青緑青黄青赤", "青", "白", 2)  '白緑白黄白赤

Replace 関数による置換後の文字列は "赤白緑白黄白赤" ですが、 4 番目の引数に 2 が指定されているので 2 文字目以降の "白緑白黄白赤" がイミディエイトウィンドウに出力されます。

置換する回数

省略可能な 5 番目の引数には置換する回数を指定することができます。デフォルトの値は -1 でこの場合は置換する回数に制限がありません。例えば 2 を指定した場合、最大でも 2 回置換を行ったあとの結果を返します。

次の例を見てください。

Debug.Print Replace("赤青緑青黄青赤", "青", "白", 1, 2)  '赤白緑白黄青赤

対象の文字列野中に "青" は 3 つありますが、 5 番目の引数に 2 が指定されているので 1 つ目と 2 つ目の "青" だけが "白" に置換されて "赤白緑白黄青赤" がイミディエイトウィンドウに出力されます。

置換するときの比較方法

省略可能な 6 番目の引数には置換するときの比較方法を指定することができます。指定できる値は次の通りです。

定数説明
vbUseCompareOption-1Option Compare ステートメントの設定を使用して比較を実行します
vbBinaryCompare0バイナリ比較を実行します
vbTextCompare1テキスト比較を実行します
vbDatabaseCompare2Microsoft Access のみ。 データベース内の情報に基づいて比較を実行します

デフォルトの値は vbBinaryCompare です。なお vbUseCompareOption を指定するとエラーとなりました。現在は使用できない可能性があります。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub Replace関数()
    Dim i As Integer

    For i = 1 To 3
        Cells(i + 2, 3).Value = Replace(Cells(i + 2, 2).Value, " ", "-")
    Next i
End Sub

Replace関数の定義と使い方(1)

このプログラムを実行すると Replace 関数を使って B3 セルから B5 セルに入力されている文字列の中の空白文字をハイフンに置換し、その結果を C3 セルから C5 セルに代入します。

Replace関数の定義と使い方(2)

Replace関数を使った指定文字列の削除

Replace 関数の 3 番目の引数に空文字を指定することで、対象の文字列の中の 2 番目の引数に指定した文字列に一致する部分を空文字に置換します。結果として元の文字列から 2 番目の引数に指定した文字列と一致する部分を削除することができます。

次の例を見てください。

Debug.Print Replace("赤青緑青黄青赤", "青", "")  '赤緑黄赤

Replace 関数の 1 番目の引数に指定した文字列の中の "青" をすべて空文字に置換するので、結果として "赤緑黄赤" がイミディエイトウィンドウに出力されます。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub Replace関数()
    Dim i As Integer

    For i = 1 To 3
        Cells(i + 2, 3).Value = Replace(Cells(i + 2, 2).Value, " ", "")
    Next i
End Sub

Replace関数を使った指定文字列の削除(1)

このプログラムを実行すると Replace 関数を使って B3 セルから B5 セルに入力されている文字列の中の空白文字を削除し、その結果が C3 セルから C5 セルに代入されます。

Replace関数を使った指定文字列の削除(2)

-- --

Excel VBA における Replace 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。