複数の語を連続置換するマクロを解説(Replaceメソッド VBA)

マクロで複数の語を連続置換

マクロ講座35回 
リストを使って複数の語を連続置換する

Replaceメソッド Excel2013 マクロ講座

複数の語を連続置換するマクロ

置換とは、セルに入力された文字列を別の文字列に置き換えることです。
Excelの置換検索機能はとても優れています。
それでも置換項目が多い場合は、めんどうですね。
そこで、今回は、複数の語句を連続で置換するマクロを考えます。そして次回は、置換リストを作成して連続置換を行います。
(サンプルファイルは、こちらから 2013マクロ講座35回サンプルデータ


Excelバージョン:Excel20192016201320102007

基本的な置換マクロ~Replace メソッド

最初は、簡単な置換からです。
指定した範囲の中から検索した文字列を他の文字列に置換するにはReplaceメソッドを利用します。
Replace メソッド
Replace メソッド
Range.Replace メソッド (Excel)パラメーター
.Replace メソッドには引数が多いので確認しておきましょう。
名前 説明
What Excel で検索する文字列。
Replacement 置き換える文字列を指定。
LookAt xlPart:検索テキストの一部を検索します。 xlWhole:検索テキスト全体を検索します。
SearchOrder xlByColumns:列を下方向に検索してから、次の列に移動します。 xlByRows:行を横方向に検索してから、次の行に移動します。
MatchCase 大文字と小文字を区別して検索するには、True を指定します。
MatchByte この引数は、Microsoft Excel で 2 バイト言語サポートを選択またはインストールした場合にのみ使用します。 2 バイト文字が 2 バイト文字とだけ一致するようにする場合は、True?を指定します。 2 バイト文字が同等の 1 バイト文字とも一致するようにする場合は、False?を指定します。
SearchFormat メソッドの検索書式を指定します。
ReplaceFormat メソッドの置換書式を指定します。
次の表で「課」を「部」に入れ替えましょう。
引数はWhatとReplacementの2つだけ使います。あとは省略が可能です。
Replace メソッド2
範囲は、Range("A2:A5")です。
Sub 置換()
    Range("A2:A5").Replace What:="Excel課", Replacement:="Excel部"
End Sub
    
簡単な置換マクロ
範囲を簡単に指定したい場合は、CurrentRegion プロパティを使うと便利です。
基準セルのセルが含まれる範囲で、空白行、空白列、空白セルで取り囲まれている領域を指定できます。
Sub 置換2()
	Range("A1").CurrentRegion.Replace What:="Excel課",Replacement:="Excel部"
End Sub
    

複数の語を連続置換するマクロ

今度は、複数の文字列を置換しましょう。販売価格を140から150に置換し、商品名をそれぞれ変更します。
今回、同じ選択範囲について何度も操作を行うので、Withステートメントを利用します。
あ
引数 LookAtで、完全に一致するものだけ置き換えるために、 LookAt:=xlWholeを指定します。LookAtは、最初に指定したものが引き継がれるので、2回め以降は省略が可能です。
Sub 連続置換()
 Range("B2:C6").Select
 With Selection
   .Replace What:=140, Replacement:="150", LookAt:=xlWhole
   .Replace What:="サニーオレンジ・ラテ", Replacement:="サニーゆず・ラテ"
   .Replace What:="ビターキャラメル・ラテ", Replacement:="苦いキャラメル・ラテ"
   .Replace What:="ミルクキャラメル・ラテ", Replacement:="みるくきゃらめる・らて"
   .Replace What:="宇治抹茶・ラテ", Replacement:="抹茶・ラテ"
   .Replace What:="ダブルキャラメル・ラテ", Replacement:="ダブルキャラメル・Rate"
 End With
End Sub
    

範囲選択、UsedRange CurrentRegion

表が大きい場合などは、CurrentRegionを使うことで範囲選択が楽になります。
あ
Sub tikan3()
    With ActiveSheet.Range("A1").CurrentRegion
       .Replace "140", "150", xlWhole
       .Replace "サニーオレンジ・ラテ", "サニーゆず・ラテ"
       .Replace "ビターキャラメル・ラテ", "苦いキャラメル・ラテ"
       .Replace "ミルクキャラメル・ラテ", "みるくきゃらめる・らて"
       .Replace "宇治抹茶・ラテ", "抹茶・ラテ"
   End With
End Sub
先に範囲を選択してからコードを実行する場合は、以下のように書くことができます。
あ
コードを実行すると完全一致する文字列だけが置換されます。
あ
次の回では、リストを使った連続置換をするマクロを作成します。