Excel VBAにおける文字列の置換方法には、
・Replace関数
⇒文字列の中から指定した文字列を置換
・Replaceメソッド
⇒セル範囲の中から指定した文字列を置換
の2種類があり少々ややこしいですが、今回はReplace関数の方をご紹介します。
文字列の置換
Replace関数の書き方は、以下のようになります。
Replace(対象文字, 検索文字, 置換文字[, 開始位置, 置換回数, 比較モード])
※[]内は全て省略可能
開始位置、 置換回数、比較モードと省略可能な引数もありますが、今回は基本的な下記の引数に絞ってご紹介します。
Replace(対象文字, 検索文字, 置換文字)
下記の例では対象文字を「月曜日」、検索文字を「月」、置換文字を「火」とし、メッセージボックスに「火曜日」と表示されるようにしています。
Sub Replace関数1() Dim str As String str = Replace(“月曜日”, “月”, “火”) MsgBox str End Sub |

Replace関数1 処理結果
文字列の削除
下記の例では対象文字を「月曜日」、検索文字を「曜日」、置換文字を空欄とし、メッセージボックスに「月」と表示されるようにしています。
Sub Replace関数2() Dim str As String str = Replace(“月曜日”, “曜日”, “”) MsgBox str End Sub |

Replace関数2 処理結果
シート上の文字列を置換
シート上に存在する文字を置換したい場合は、下記のようになります。
変数strにセルA1の文字列を代入し、対象文字列をstrとして「月」を「火」に置換し、セルA1に「火曜日」という文字列を入力しています。
Sub Replace関数3() Dim str As String str = Cells(1, 1).Value str = Replace(str, “月”, “火”) Cells(1, 1).Value = str End Sub |

Replace関数3 処理前

Replace関数3 処理結果
シート上の文字列を繰り返し置換
下記は、シート上に存在する文字列の置換と、Forステートメントによる繰り返し処理や最終行の取得を組み合わせた例です。
セルA1~A7の「曜」という文字列を「曜日」に置換しています。
Sub Replace関数4() Dim str As String MaxRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To MaxRow str = Cells(i, 1).Value str = Replace(str, “曜”, “曜日”) Cells(i, 1).Value = str Next i End Sub |

Replace関数4 処理前

Replace関数4 処理結果