Vba: 文字列内の文字を置換する方法
VBA のReplace()メソッドを使用して、文字列内の文字を置換できます。
このメソッドでは、次の基本構文を使用します。
Replace(式、検索、置換、開始、カウント)
金:
- 式: 文字を置換する文字列
- find : 検索する文字列
- replace : 置換として使用する文字列
- start (オプション) : 検索する文字列内の開始位置
- count (オプション) : 実行する置換の数
次の例は、Excel の次の文字列リストを使用してこのメソッドを実際に使用する方法を示しています。
例 1: VBA を使用して、文字列内のすべての文字を置換します (大文字と小文字を区別します)。
各文字列の「this」を「THAT」に置き換えたいとします。
これを行うには、次のマクロを作成できます。
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
このマクロを実行すると、次の出力が表示されます。
列 B には、列 A の各文字列が表示されます。「this」が出現するたびに「THAT」に置き換えられます。
この置換では大文字と小文字が区別されることに注意してください。
つまり、「this」の各出現箇所は置き換えられますが、「this」の各出現箇所はそのまま残されます。
例 2: VBA を使用して、文字列内のすべての文字を置換します (大文字と小文字は区別されません)。
各文字列の「this」(大文字と小文字は関係なく) を「THAT」に置き換えたいとします。
これを行うには、次のマクロを作成できます。
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
このマクロを実行すると、次の出力が表示されます。
列 B には、列 A の各文字列が表示されます。「this」が出現するたびに「THAT」に置き換えられます。
この置換では大文字と小文字が区別されないことに注意してください。
つまり、「this」が出現するたびに (大文字かどうかに関係なく) 置き換えられます。
各文字列で “this” を検索する前に、 LCaseメソッドを使用して列 A の各文字列を最初に小文字に変換することで、この大文字と小文字を区別しない置換を実行できました。
例 3: VBA を使用して文字列内の最初の N 個の文字を置換する
各文字列内で最初に出現する「this」のみ (大文字小文字に関係なく) を「THAT」に置き換えたいとします。
これを行うには、次のマクロを作成できます。
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
このマクロを実行すると、次の出力が表示されます。
列 B には、列 A の各文字列が表示され、最初に出現した「this」のみが「THAT」に置き換えられます。
特定の文字列の最初の出現のみを置換するためにCount:=1を使用しましたが、特定の文字列の最初のn 個の出現を置換するには、1 を任意の値に置き換えることができることに注意してください。
注: VBA Replaceメソッドの完全なドキュメントはここにあります。
追加リソース
次のチュートリアルでは、VBA を使用して他の一般的なタスクを実行する方法について説明します。
VBA: 文字列内の文字の出現を数える方法
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 特定のテキストを含むセルを数える方法