目次
概要
Excelでデータの修正作業を行う際に、「特定の文字列を別の文字列に置き換えたい」という場面は多くあります。手作業で探して置き換えることも可能ですが、VBAを使えば複数セルの置き換えを一括で自動化できます。
本記事では、**セルの値を置き換える2つの方法(ループ処理と Replace メソッド)**をご紹介いたします。用途に応じた使い分けが可能です。
サンプルコード
Sub ReplaceCityNames()
' 方法①:選択範囲内を1つずつ確認して置換
Dim targetCell As Range
For Each targetCell In Selection
If targetCell.Value = "北町区" Then
targetCell.Value = "南町区"
End If
Next targetCell
' 方法②:範囲を一括で置換(表示形式も維持)
Range("B2:B10").Replace _
What:="北町区", _
Replacement:="南町区", _
MatchByte:=False
End Sub
コード解説
方法①:ループ処理で1件ずつ置換
For Each targetCell In Selection
If targetCell.Value = "北町区" Then
targetCell.Value = "南町区"
End If
Next targetCell
- 現在選択されているセルの中で、「北町区」と等しいセルだけを探して値を変更します。
- 大文字小文字や全角半角は一致していなければ対象になりません。
- データの条件を細かく制御したい場合に向いています。
方法②:Replaceメソッドで一括置換
Range("B2:B10").Replace _
What:="北町区", _
Replacement:="南町区", _
MatchByte:=False
Range("B2:B10")
の範囲内で「北町区」をすべて「南町区」に置き換えます。MatchByte:=False
により、全角・半角を区別せずに一致を確認します。- 表全体や広範囲を一括で置換したい場合に便利です。
応用例
- 社名や担当者名などのマスターデータを一括更新
- 古い表記を最新の呼称に変換
- 地名・商品名などの統一表記化
注意点
Replace
メソッドは部分一致でも置換されるため、「市」を含む別の語句(例:「市川市」)まで変わる可能性があります。必要に応じてLookAt:=xlWhole
を指定して完全一致にすることも可能です。- 数式のセルに対しては置換が適用されない場合があるため、
LookIn:=xlValues
を指定して対応することも可能です。
まとめ
本記事では、VBAでセルの値を置き換える方法として、以下の2つのアプローチをご紹介いたしました。
方法 | 特徴 |
---|---|
ループ処理 | 条件付きで1件ずつ細かく置換できる |
Replaceメソッド | 範囲内の該当文字列を一括で置換できて高速 |
用途に応じて、どちらの方法を使うか判断することで、Excel作業の効率を大きく向上させることができます。