教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 関数】Replace関数の使い方を教えて!

構文

構文は以下の通りです。

Replace(対象文字列, 検索文字列, 置換文字列, [開始位置], [置換回数], [比較方法])

解説

Replace関数は、文字列内の指定された文字列を別の文字列に置き換える関数です。

引数 指定 内容
対象文字列 必須 置換を行いたい文字列を指定します。
検索文字列 必須 置換対象となる文字列を指定します。
置換文字列 必須 置換後の文字列を指定します。
開始位置 省略可 検索を開始する位置を指定します。省略すると先頭から検索が始まります。
置換回数 省略可 置換する回数を指定します。省略するとすべての一致箇所が置換されます。
比較方法 省略可 文字列の比較方法を指定します。省略するとバイナリ比較が行われます。

使用例

Replace("accessVBA", "A", "*")

使い方

使い方を幾つか紹介します。

例1: 文字列内の単語を置換する

次の例では、対象文字列内の特定の単語を置換します。

Sub ReplaceExample1()
    Dim targetString As String
    targetString = "I love programming. Programming is fun."
    ' "programming"を"coding"に置換
    targetString = Replace(targetString, "programming", "coding")
    ' 結果を表示
    MsgBox targetString
End Sub

この例では、対象文字列「I love programming. Programming is fun.」の中の「programming」を「coding」に置換しています。Replace関数によって、「I love coding. Coding is fun.」という結果が得られます。

例2: 特定の範囲内の文字列を置換する

次の例では、対象文字列の一部の文字列を置換します。

Sub ReplaceExample2()
    Dim targetString As String
    targetString = "Today is a sunny day."
    ' "sunny"を"rainy"に置換(3文字目以降から検索)
    targetString = Replace(targetString, "sunny", "rainy", 3)
    ' 結果を表示
    MsgBox targetString
End Sub

この例では、対象文字列「Today is a sunny day.」の中の「sunny」を「rainy」に置換しています。Replace関数の開始位置を3と指定しているため、3文字目以降から検索が行われます。結果として、「Today is a rainy day.」が得られます。

例3: 検索回数を制限する

次の例では、対象文字列内の最初の2つの一致箇所のみを置換します。

Sub ReplaceExample3()
    Dim targetString As String
    targetString = "She sells seashells by the seashore."
    ' "she"を"he"に置換(最初の2つの一致箇所のみ置換)
    targetString = Replace(targetString, "she", "he", , 2)
    ' 結果を表示
    MsgBox targetString
End Sub

この例では、対象文字列「She sells seashells by the seashore.」の中の「she」を「he」に置換しています。Replace関数によって、最初の2つの一致箇所のみが置換され、「He sells seashells by the seashore.」が得られます。

プログラミング例

下記の例では、セルA1の文字列内に含まれる「犬」を「猫」に置き換えるプログラムを作成しています。

Sub ReplaceExample()
    Dim text As String
    text = Range("A1").Value
    ' 置換前の文字列を表示
    MsgBox "置換前の文字列:" & text
    ' 置換処理
    text = Replace(text, "犬", "猫")
    ' 置換後の文字列を表示
    MsgBox "置換後の文字列:" & text
End Sub

このプログラムでは、まずRange("A1").ValueでセルA1の値を取得し、text変数に代入しています。次に、Replace関数を使ってtext変数内の「犬」を「猫」に置き換えています。最後に、MsgBox関数を使って置換前と置換後の文字列を表示しています。このように、Replace関数を使うことで、特定の文字列の置換が簡単に行えます。ただし、この例ではセルA1の値を対象にしていますが、必要に応じて他のセルや変数に格納された文字列を対象にすることも可能です。さらに、Replace関数はオプション引数も利用することができます。例えば、大文字と小文字を区別しない置換や、一度に複数の文字列を置換する場合など、さまざまな応用が可能です。

Replace関数のオプション引数の一つに「Compare」があります。これを利用すると、置換処理を行う際に文字の大文字と小文字を区別するかどうかを指定することができます。以下に、オプション引数「Compare」を使ったプログラミング例を示します。

Sub ReplaceExample()
    Dim text As String
    text = Range("A1").Value
    ' 大文字と小文字を区別しない置換
    text = Replace(text, "Dog", "Cat", , , vbTextCompare)
    ' 置換後の文字列を表示
    MsgBox "置換後の文字列:" & text
End Sub

この例では、Replace関数の最後の引数にvbTextCompareを指定しています。これにより、置換処理が大文字と小文字を区別せずに行われます。例えば、「Dog」という文字列が「dog」や「DOG」といった形式でも「Cat」に置き換わります。

また、Replace関数は一度に複数の文字列を置換することも可能です。以下に、複数の文字列を置換するプログラミング例を示します。

Sub ReplaceExample()
    Dim text As String
    text = Range("A1").Value
    ' 複数の文字列を置換
    text = Replace(text, "犬", "猫")
    text = Replace(text, "猿", "象")
    text = Replace(text, "鳥", "魚")
    ' 置換後の文字列を表示
    MsgBox "置換後の文字列:" & text
End Sub

この例では、複数のReplace関数を連続して使っています。各行の置換処理は独立しており、先ほどの例と同様に指定した文字列が見つかると対応する置換後の文字列に置き換わります。

まとめ

Replace関数は、文字列内の指定された文字列を別の文字列に置き換えるための便利な関数です。是非活用してください。