HOME > 即効テクニック > Excel VBA > 文字列操作関連のテクニック > 指定した文字列を検索し別の文字列に置換する(Replace関数)

指定した文字列を検索し別の文字列に置換する(Replace関数)|Excel VBA

文字列操作関連のテクニック

指定した文字列を検索し別の文字列に置換する(Replace関数)

(Excel 2000/2002/2003/2007/2010)

引数Findで指定した文字列を、Expressionで指定した文字列内で検索し、見つかった場合には、引数Replaceで指定した文字列に置換します。
引数Countでは、置換する回数を指定します。
つまり、1を指定した場合には、最初に見つかった文字列のみを置き換えます。
省略時には全て置換えられます。

構文 Replace(Expression, Find, Replace, Start, Count, Compare)

設定項目 内容
Expression置換元の文字列式を指定 [省略不可]
Find検索する文字列を指定 [省略不可]
Replace置換する文字列を指定 [省略不可]
Start検索開始位置を指定。省略時は1 [省略可能]
Count置換する回数を指定。省略時は全て置換 [省略可能]
Compare比較モードを指定(表参照) [省略可能]

・引数Compareで指定する比較モードを表す定数一覧(VbCompareMethod列挙体のメンバ)

定数 説明
vbBinaryCompare 0 バイナリ モードの比較
vbTextCompare 1 テキスト モードの比較
vbDatabaseCompare 2 Microsoft Access の場合のみ有効。データベースに格納されている設定に基づいて比較

次のサンプルでは、Replace関数の代表的な使い方を3例紹介しています。

●サンプル●

Sub ReplaceSample()
   Dim myStr As String
   
   myStr = "A B C A B C"
   MsgBox "『" & myStr & "』の空白を削除します" & vbCrLf & _
          "『" & Replace(myStr, " ", "") & "』"                           '--(1)
   
   myStr = "ABCABCabc"
   MsgBox "『" & myStr & "』のすべてのCを*に置換します" & vbCrLf & _
          "『" & Replace(myStr, "C", "*", , , vbTextCompare) & "』"       '--(2)
          
   myStr = "モグタンがタンタンメンを食べた"
   MsgBox "『" & myStr & "』の6文字目以降のタンを" & _
          "1つ空白に置換します" & vbCrLf & _
          "『" & Left(myStr, 5) & Replace(myStr, "タン", "", 6, 1) & "』" '--(3)
End Sub

●解説●

(1)では置換文字列に長さ0の文字列("")を指定することで、検索した文字列(この例では空白)を削除しています。文字列中のスペースを削除するには、このようにReplace関数を使用します。

(2)ではテキストモードで比較しているため、全角と半角、および大文字と小文字のすべての文字"C"を"*"に置換しています。

(3)では検索開始位置に6文字目を、置換回数に1を指定し、文字列"タン"を1つだけ削除しています。ただし、検索開始位置に6文字目を指定すると、置換後にReplace関数が返す文字列も6文字目以降(この例では"タンメンを食べた")となります。そのため、検索開始位置より左にある文字列をLeft関数で取得して連結しています。