更新日:、 作成日:
VBA Replace 関数:文字列を置換する
はじめに
Excel VBA マクロの Replace 関数から文字列を置換する方法を紹介します。
Replace 関数は、文字列を別の文字に置換します。
123123 の 1 を _ に置換するなら _23_23 を返します。
大文字と小文字などを区別するか選択できます。
文字列の一部を置換や削除したいときに使用します。
文字列を置換するには「文字列を置換する」をご覧ください。
Replace 関数の引数と戻り値
Replace(文字列, 検索文字, 置換文字)
文字列の検索文字を置換文字に置換します。
Replace(文字列, 検索文字, 置換文字, 開始位置, 置換回数, 比較モード)
置換する開始位置を指定できます。複数の検索文字が見つかったときの置換回数を指定できます。比較モードで大文字と小文字を区別するか指定できます。
引数「文字列」 | 置換元の文字列を指定します。 |
引数「検索文字」 | 検索する文字列を指定します。 |
引数「置換文字」 | 置換する文字列を指定します。 |
引数「開始位置」 | 省略できます。何文字目から置換するか指定します。 |
引数「置換回数」 | 省略できます。引数「検索文字」が複数見つかったときに、何個置換するか指定します。 |
引数「比較モード」 | 省略できます。大文字と小文字を区別して検索するかを指定します。 |
戻り値の型 | 文字列型 (String) |
引数「比較モード」
単位 | 説明 |
vbBinaryCompare (既定) | 「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。 |
vbTextCompare | 区別しない。 |
スポンサーリンク
解説
引数「検索文字」が見つからないときは、引数「文字列」を返します。
引数「置換文字」が空文字 "" なら、引数「検索文字」を削除できます。
引数「開始位置」を省略すると 1 文字目から置換します。これは 1 を指定したときと同じです。
引数「開始位置」を指定すると、それより前の文字は削除されます。123456 のときに 3 なら 3456 から置換して返します。
開始位置より前の文字を残すには「Left 関数」を使用します。
引数「開始位置」が引数「文字列」の文字数を超えるときは、空文字 "" を返します。
引数「置換回数」を省略すると、すべての引数「検索文字」を置換します。これは -1 を指定したときと同じです。
セルの値を置換するには「セルを置換する」をご覧ください。
使用例
Replace 関数の使用例を紹介します。
文字列を置換する
文字列を置換します。
Dim s As String
s = Replace("123123", "1", "_")
Debug.Print(s) ' _23_23
s = Replace("123123", "A", "_") ' 検索文字が見つからない
Debug.Print(s) ' 123123
s = Replace("123123", "1", "") ' 検索文字を削除する
Debug.Print(s) ' 2323
s = Replace(" A B C ", " ", "", compare:=vbTextCompare) ' 半角と全角スペースを削除
Debug.Print(s) ' ABC
Dim 文字列 As String
文字列 = "一" & vbCrLf & "二"
s = Replace(文字列, vbCrLf, "") ' 改行を削除する
Debug.Print(s) ' 一二
文字列 = "一" & vbLf & "二"
s = Replace(文字列, vbLf, "") ' セル内の改行を削除する
Debug.Print(s) ' 一二
位置を指定して置換する
「Left 関数」を使用して、置換位置より前の文字を残して置換できます。
Dim s As String
s = Replace("123456", "5", "_", 3) ' 3 文字目から置換する
Debug.Print(s) ' 34_6
s = Replace("001122", "1", "_", 4) ' 4 文字目から置換する
Debug.Print(s) ' _22
Dim 前の文字 As String
前の文字 = Left("001122", 3) ' 001、前の文字を取得する
Debug.Print(前の文字 & s) ' 001_22、前の文字と置換後の文字を結合
置換回数を指定して置換する
置換回数を指定して置換します。
Dim s As String
s = Replace("00000", "0", "1", Count:=1) ' 1 回置換する
Debug.Print(s) ' 10000
s = Replace("00000", "0", "1", Count:=2) ' 2 回置換する
Debug.Print(s) ' 11000
s = Replace("00000", "0", "1", Count:=-1) ' すべて置換する
Debug.Print(s) ' 11111
大文字と小文字を区別しないで置換する
大文字と小文字を区別しないで置換します。
Dim s As String
s = Replace("abcABC", "a", "_", compare:=vbBinaryCompare) ' 区別する
Debug.Print(s) ' _bcABC
s = Replace("abcABC", "a", "_", compare:=vbTextCompare) ' 区別しない
Debug.Print(s) ' _bc_BC
s = Replace("アイウアイウ", "ア", "_", compare:=vbBinaryCompare) ' 区別する
Debug.Print(s) ' アイウ_イウ
s = Replace("アイウアイウ", "ア", "_", compare:=vbTextCompare) ' 区別しない
Debug.Print(s) ' _イウ_イウ
s = Replace("あいうアイウ", "ア", "_", compare:=vbBinaryCompare) ' 区別する
Debug.Print(s) ' あいう_イウ
s = Replace("あいうアイウ", "ア", "_", compare:=vbTextCompare) ' 区別しない
Debug.Print(s) ' _いう_イウ
スポンサーリンク