Excel VBAでマクロを作り始めると、
「この文字を別の文字に置き換えたい」
「表記ゆれをまとめて直したい」
といった 文字列の置換処理 に必ず出会います。
最初は Replace 関数を1回使うだけで済みますが、
実務では次のような状況がよく発生します。
- 複数の文字列を一気に置換したい
- 置換ルールが増えてきた
- 同じ処理を何度も使い回したい
こうした場面で、
Replaceを力技で並べると、コードが一気に読みにくくなります。
この記事では、VBA初心者の方でも理解できるように、
- 文字列を複数置換する基本的な考え方
- 実務でそのまま使えるコード例
- よくある失敗と注意点
を、コード付きで順番に解説していきます。
目次
- ✅ VBAで「文字列を複数置換する」とは
- ※誤解されやすいポイント
- ・単一置換と複数置換の違い
- ・初心者が最初につまずくポイント
- ✅ Replace関数を使った一番シンプルな複数置換
- ※ここを読まないと後で困る理由
- ・Replaceを順番に使う基本例
- ・この方法のメリットと限界
- ✅ 配列を使って複数置換する【初心者向け・定番】
- ※実務で一番よく使われる方法
- ・考え方を先に理解する
- ・配列を使った実務コード例
- ・この方法が初心者に向いている理由
- ✅ セル範囲に対して複数置換する方法
- ※ここを読まないと実務で使えない
- ・基本的な流れ
- ・実務で使えるコード例(A列対象)
- ・なぜ配列で処理するのか
- ✅ 置換順序に注意しないと起きる失敗
- ※初心者が一番ハマりやすいポイント
- ・よくある失敗例
- ・初心者向けの対策
- ✅ 複数置換を関数にする(初心者向け)
- ※ここを覚えると一気に実務レベル
- ・関数化した例
- ・初心者でも関数化するメリット
- ✅ よくある初心者の失敗まとめ
- ※ここを読まないと後悔しやすい
- ✅ まとめ:VBAで文字列を複数置換する基本
✅ VBAで「文字列を複数置換する」とは
※誤解されやすいポイント
「Replaceを何回も書けばOK」と思うと、後で修正が大変になります。
・単一置換と複数置換の違い
VBAの Replace 関数は、
1回の処理で1つの文字列しか置換できません。
そのため、
- 「A」を「B」に
- 「C」を「D」に
- 「E」を「F」に
といった複数のルールを適用したい場合、
何らかの工夫が必要になります。
・初心者が最初につまずくポイント
よくあるのが、次のような状態です。
- Replaceが何十行も並んでいる
- どこで何を置換しているか分からない
- 1か所修正したら別の処理が壊れた
これを防ぐために、
置換ルールと処理ロジックを分けて考えることが重要です。
✅ Replace関数を使った一番シンプルな複数置換
※ここを読まないと後で困る理由
まずは「基本形」を知らないと、応用が理解できません。
・Replaceを順番に使う基本例
最も分かりやすい方法は、
Replaceを順番に適用するやり方です。
Sub ReplaceMultiple_Basic()
Dim textValue As String
textValue = "東京ー大阪_名古屋"
' 複数の文字を順番に置換
textValue = Replace(textValue, "ー", "-")
textValue = Replace(textValue, "_", "・")
MsgBox textValue
End Sub
・この方法のメリットと限界
メリット
- コードが直感的で分かりやすい
- 初心者でも理解しやすい
デメリット
- 置換ルールが増えると読みにくい
- 修正漏れが起きやすい
- 実務では管理が大変
👉 小規模ならOKですが、
実務では次の方法がよく使われます。
✅ 配列を使って複数置換する【初心者向け・定番】
※実務で一番よく使われる方法
初心者にもおすすめで、後から修正しやすいです。
・考え方を先に理解する
ポイントはとてもシンプルです。
- 置換前の文字列を配列にまとめる
- 置換後の文字列を配列にまとめる
- ループで順番にReplaceする
これだけです。
・配列を使った実務コード例
Sub ReplaceMultiple_Array()
Dim textValue As String
textValue = "東京ー大阪_名古屋"
Dim beforeWords As Variant
Dim afterWords As Variant
Dim i As Long
' 置換前・置換後を配列で管理
beforeWords = Array("ー", "_")
afterWords = Array("-", "・")
' 配列をループして置換
For i = LBound(beforeWords) To UBound(beforeWords)
textValue = Replace(textValue, beforeWords(i), afterWords(i))
Next i
MsgBox textValue
End Sub
・この方法が初心者に向いている理由
- 置換ルールが一目で分かる
- 追加・修正が簡単
- コードの流れが追いやすい
実務では
まずこの形を覚えておけばOK です。
✅ セル範囲に対して複数置換する方法
※ここを読まないと実務で使えない
文字列だけでなく、Excelのセルが対象になることが多いです。
・基本的な流れ
- セルの値を配列で取得
- VBAで複数置換
- 結果を一括で書き戻す
この方法は、
大量データでも高速に処理できます。
・実務で使えるコード例(A列対象)
Sub ReplaceMultiple_Cells()
Dim targetRange As Range
Set targetRange = Range("A1:A10")
Dim data As Variant
data = targetRange.Value
Dim beforeWords As Variant
Dim afterWords As Variant
Dim i As Long, r As Long
beforeWords = Array("株式会社", "(株)")
afterWords = Array("", "")
' セル配列をループ
For r = LBound(data, 1) To UBound(data, 1)
For i = LBound(beforeWords) To UBound(beforeWords)
data(r, 1) = Replace(data(r, 1), beforeWords(i), afterWords(i))
Next i
Next r
targetRange.Value = data
End Sub
・なぜ配列で処理するのか
- セルを1つずつ触らない
- 画面更新が少ない
- 処理速度が速い
👉 実務ではこの形がほぼ標準です。
参考:【VBA】Excelシート全体の置換を自動化する方法|部分一致・完全一致まで徹底解説
✅ 置換順序に注意しないと起きる失敗
※初心者が一番ハマりやすいポイント
順番を間違えると、結果が変わります。
・よくある失敗例
- 「AB」を「A」に置換
- 「A」を「Z」に置換
この場合、
どちらを先に行うかで結果が変わります。
・初心者向けの対策
- 置換ルールが重ならないようにする
- 必ず「配列の順番」を意識する
- 複雑なら処理を分ける
無理に1つにまとめないのも、
立派な実務判断です。
参考:【VBA】Replaceメソッドでワイルドカードを使う方法|正規表現で柔軟な一括置換を実現
✅ 複数置換を関数にする(初心者向け)
※ここを覚えると一気に実務レベル
同じ処理を何度も書かなくて済みます。
・関数化した例
Function ReplaceMultiple(textValue As String) As String
Dim beforeWords As Variant
Dim afterWords As Variant
Dim i As Long
beforeWords = Array("ー", "_")
afterWords = Array("-", "・")
For i = LBound(beforeWords) To UBound(beforeWords)
textValue = Replace(textValue, beforeWords(i), afterWords(i))
Next i
ReplaceMultiple = textValue
End Function
呼び出し側は、
Sub SampleCall()
Dim result As String
result = ReplaceMultiple("東京ー大阪_名古屋")
MsgBox result
End Sub
・初心者でも関数化するメリット
- コードがスッキリする
- 修正が1か所で済む
- バグが減る
「少し難しそう」と感じても、
早めに慣れておくと後が楽です。
✅ よくある初心者の失敗まとめ
※ここを読まないと後悔しやすい
- Replaceを直書きで並べすぎる
- 置換ルールがコードの中に散らばる
- 順序を考えずに置換している
- セルを1つずつ処理して遅くなる
これらはすべて、
今回紹介した方法で防げます。
参考:【VBA】文字列を一括置換する方法|Replaceメソッドで効率的にデータを整理するテクニック
✅ まとめ:VBAで文字列を複数置換する基本
- Replaceは1つずつしか置換できない
- 複数置換は配列+ループが基本
- セル処理は配列でまとめて行う
- 置換順序には必ず注意する
- 関数化すると実務で使いやすい
VBAでの複数置換は、
難しいテクニックではなく、考え方が重要です。
まずは配列を使った方法から試してみてください。
それだけで、
あなたのVBAコードは 格段に読みやすく、壊れにくく なります。