【VBA】シート上の文字列を一括で置換する【対象範囲を指定】

VBAで
 ・シート上の文字列を
 ・一括で置換
できます!

置換対象の範囲として
 ・指定したシート列のみ
 ・指定したシート行のみ
 ・指定したシート全体
の3種類を指定できます!

他の記事の内容と組み合わせることで
 ・ブック全体(=全てのシート)を置換対象
にすることもできます!

PR

VBAコード

ここでは例として、
 ・シート「sample」「B列(=2列目)」のみを対象に
 ・文字列「(株)」を「株式会社」へ置換
します。

実行前
実行前
Option Explicit

Sub sample()
    
    Dim targetColumn As Integer
    Dim srcStr As String
    Dim destStr As String
    
    '置換対象の列
    targetColumn = 2
    '置換前の文字列を設定
    srcStr = "(株)"
    '置換後の文字列を設定
    destStr = "株式会社"
    
    'シート上の文字列を置換
    Worksheets("sample").Columns(targetColumn).Replace What:=srcStr, _
                                                      Replacement:=destStr, _
                                                      LookAt:=xlPart, _
                                                      MatchCase:=True
    
End Sub

「置換対象の列」を設定します(10行目)。
※上記では「2列名(=B列)」を指定しています。

「置換の文字」を設定します(12行目)。 ※上記では「(株)」を設定しています。
「置換の文字列」を設定します(14行目)。 ※上記では「株式会社」を設定しています。

「Worksheetsオブジェクト(“シート名”)」により、「Worksheetオブジェクト」を取得します(17行目)。

「Worksheetオブジェクト」の「Columns」プロパティにより、指定した列のセルを示す「Rangeオブジェクト」を取得します(17行目)。

「Rangeオブジェクト」の「Replace」メソッドにより、置換します。
引数に以下を指定します(17~20行目)。

What・・・・・・置換の文字列を指定
Replacement・・・置換の文字列を指定
LookAt・・・・・・完全一致(xlWhole) or 部分一致(xlPart)を指定
MatchCase・・・・大文字と小文字を区別する(True) or しない(False)を指定

上記は「Worksheets(“シート名”).Columns(列名).Replace」としているため、
対象範囲は指定したシート指定した列のみになります。

Worksheets(“シート名”).Rows(行番号).Replace」にすると、
対象範囲を指定したシート指定した行のみにできます。

Worksheets(“シート名”).Cells.Replace」にすると、
対象範囲を指定したシート全体にできます。

「置換の文字列」が1つも存在しない状態で実行しても、エラーにはなりません。

PR

実行結果

指定した文字列を置換できました。
シート「sample」の「B列(=2列目)」のみを対象に、文字列「(株)」を文字列「株式会社」へ置換できました。

●実行

実行前
実行

●実行

実行後
実行
PR

参考①

本記事と以下の記事の内容を組み合わせることで
 ・ブック全体(=全てのシート)に対して、文字列を一括で置換
できます。


またさらに、以下の記事の内容と組み合わせることで
 ・指定フォルダ配下にある全てのエクセルファイルに対して、文字列を一括で置換
できます。

PR

参考②

指定した文字列が設定されているセルの背景色を置換することもできます。

詳細は以下の記事をご確認ください。

PR

参考③

セルに設定されている文字列の一部を置換することもできます。

詳細は以下の記事をご確認ください。

PR

参考④

変数の設定値(文字列)を置換することもできます。

詳細は以下の記事をご確認ください。

PR

参考⑤

指定した文字列のフォントを変更することもできます。

詳細は以下の記事をご確認ください。

PR

参考⑥

テキストファイル内の文字列の置換もできます。

詳細は以下の記事をご確認ください。

PR

参考⑦

上記のVBAコードで使用している以下の詳細は、公式サイトをご確認ください。

●「Worksheetオブジェクト」の「Columns」プロパティ
※指定したのセルを示す「Rangeオブジェクト」を取得します。


●「Worksheetオブジェクト」の「Rows」プロパティ
※指定したのセルを示す「Rangeオブジェクト」を取得します。


●「Worksheetオブジェクト」の「Cells」プロパティ
※指定したシート全体のセルを示す「Rangeオブジェクト」を取得します。


●「Rangeオブジェクト」の「Replace」メソッド
※置換処理をします。