Replace関数:文字列の中の指定した部分文字列を別の文字列に置換する
Replace 関数は Excel VBA で用意されている関数の一つで、引数に指定した文字列の中の指定の部分文字列を別の文字列に置換します。置き換える文字列を空文字にすることで指定の部分文字列を削除することもできます。ここでは Excel VBA における Replace 関数の使い方について解説します。
(Last modified: )
Replace関数の定義と使い方
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 | -1 | Option Compare ステートメントの設定を使用して比較を実行します |
vbBinaryCompare | 0 | バイナリ比較を実行します |
vbTextCompare | 1 | テキスト比較を実行します |
vbDatabaseCompare | 2 | Microsoft 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
関数を使って B3 セルから B5 セルに入力されている文字列の中の空白文字をハイフンに置換し、その結果を C3 セルから C5 セルに代入します。
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
関数を使って B3 セルから B5 セルに入力されている文字列の中の空白文字を削除し、その結果が C3 セルから C5 セルに代入されます。
-- --
Excel VBA における Replace 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。