VBA入門・VBA Replaceの使い方徹底解説|Range.Replaceで文字列を置換する方法と正規表現対応

vba replace 2025

Excel VBAを使ってデータを自動で編集する際、「文字列を置換したい」と思うことは多いでしょう。VBAには、文字列の内容を自動で書き換える便利な関数やメソッドが用意されています。この記事では、VBA Replace関数とReplaceメソッドで文字列を置換する方法をわかりやすく解説します。複数条件の置換や正規表現を使った応用テクニックも紹介するので、データ処理を効率化したい方は必見です。

VBAで文字列を置換するには?Replaceの基本を理解しよう

VBAで文字列を置換する方法は主に2つあります。

  • Replace関数:文字列変数内の一部を置き換える
  • Range.Replaceメソッド:セル範囲内の文字列を置き換える
方法 対象 主な用途
Replace関数 文字列変数 コード内のテキスト処理
Range.Replace セル範囲 Excelシート上のデータ処理

単純な文字列処理から、シート全体の一括置換まで、これらを使い分けることで自動化が簡単になります。

Replace関数の基本構文と使い方

Replace関数の構文と使用方法については、VBAのReplace関数・Replaceメソッドの違いと使い方を徹底解説でも詳細に解説されています。

Replace(expression, find, replace[, start[, count[, compare]]])
引数 意味
expression 対象文字列
find 検索する文字列
replace 置換する文字列
start 置換を開始する位置(省略可)
count 置換する回数(省略可)
compare 大文字小文字の区別設定(vbBinaryCompare/vbTextCompare)

使用例

Sub ReplaceExample()
Dim text As String
text = "apple banana"
text = Replace(text, "apple", "orange")
MsgBox text '→ "orange banana"
End Sub

大文字小文字を区別しない置換

text = Replace(text, "APPLE", "orange", , , vbTextCompare)

Replace関数の応用例:改行や部分置換にも対応

改行コードの置換:

text = Replace(text, vbCrLf, " ")

改行をスペースに変換してテキストを1行にまとめることができます。

特定範囲のみ置換:

text = Replace(text, "a", "A", 5) '5文字目以降を置換

正規表現を使って柔軟に置換する方法

正規表現を使えば、パターンに一致する文字列を一括で置換できます。数字の削除や特定形式の変換など、より高度な処理が可能です。

Sub RegExpReplace()
Dim regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "[0-9]" '数字を対象
regEx.Global = True
Dim text As String
text = "abc123def"
text = regEx.Replace(text, "")
MsgBox text '→ "abcdef"
End Sub

ポイント:

  • .Patternで検索ルールを設定
  • .Global = Trueで全文置換を指定
  • .Replace(文字列, 置換後文字列)で置換実行

複数の文字列をまとめて置換する方法

複数のキーワードを順番に置換したい場合は、配列(Array)を使うと便利です。

Sub MultiReplace()
Dim text As String
Dim findList, repList
Dim i As Integer
text = "Tokyo Osaka Nagoya"
findList = Array("Tokyo", "Osaka", "Nagoya")
repList = Array("東京", "大阪", "名古屋")
For i = 0 To UBound(findList)
text = Replace(text, findList(i), repList(i))
Next i
MsgBox text '→ "東京 大阪 名古屋"
End Sub

この方法を応用すると、辞書(Dictionary)を使って柔軟に複数条件を置換することも可能です。

Range.Replaceメソッドでセル内の文字列を置換する

Excelシート上のデータを置換したい場合は、Range.Replaceメソッドを使います。

Range.Replace What, Replacement, LookAt, MatchCase
引数 意味
What 検索する文字列
Replacement 置換文字列
LookAt 一致モード(xlWhole/xlPart)
MatchCase 大文字小文字の区別

使用例

Sub RangeReplaceExample()
Range("A1:A10").Replace What:="東京", Replacement:="TOKYO", LookAt:=xlPart
End Sub

Range.Replaceの応用・ワイルドカード・複数条件で置換する

ワイルドカードを使った部分一致置換:

Range("A1:A10").Replace What:="*株式会社*", Replacement:="(株)"
  • *:任意の文字列
  • ?:任意の1文字

複数条件で一括置換:

Sub MultiRangeReplace()
Dim ws As Worksheet
Dim words, reps
Dim i As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
words = Array("旧社名", "株式会社", "有限会社")
reps = Array("新社名", "(株)", "(有)")
For i = 0 To UBound(words)
ws.Cells.Replace What:=words(i), Replacement:=reps(i), LookAt:=xlPart
Next i
End Sub

このように、Range.Replaceを使えばシート全体の文字列置換を一括で処理できます。より高度な実務向けサンプルは、VBA Replace関数|文字列を効率よく置換する方法でも紹介されています。

Replace関数とRange.Replaceメソッドの使い分けポイント

方法 適した用途
Replace関数 文字列変数の中身を置換したいとき
Range.Replace Excelのセル範囲内を一括置換したいとき
RegExp パターンに基づく柔軟な置換を行いたいとき

両方を組み合わせることで、VBAの置換処理をより強力に自動化できます。

まとめ|Replaceを使いこなして置換処理を自動化しよう

  • VBA Replace関数は文字列操作に最適
  • Range.Replaceでセル範囲を一括置換できる
  • 正規表現・RegExpを使えば複雑な条件にも対応可能

これらを理解すれば、VBAでの文字列置換やデータ整形が劇的に効率化します。基本構文と引数の意味を押さえて、ぜひ実務や自動化マクロに活用してみてください。

読む  VBA入門・実行時エラー 1004の原因と対処法まとめ|アプリケーション定義エラーを解消しよう
タイトルとURLをコピーしました