VBAでセルの値を置き換える方法【ループ処理とReplaceの使い分け】

目次

概要

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作業の効率を大きく向上させることができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次