マクロで複数の語を連続置換
マクロ講座35回
Replaceメソッド Excel2013 マクロ講座
複数の語を連続置換するマクロ
置換とは、セルに入力された文字列を別の文字列に置き換えることです。
Excelの置換検索機能はとても優れています。
それでも置換項目が多い場合は、めんどうですね。
そこで、今回は、複数の語句を連続で置換するマクロを考えます。そして次回は、置換リストを作成して連続置換を行います。
(サンプルファイルは、こちらから 2013マクロ講座35回サンプルデータ)
Excelバージョン:
基本的な置換マクロ~Replace メソッド
最初は、簡単な置換からです。
指定した範囲の中から検索した文字列を他の文字列に置換するにはReplaceメソッドを利用します。
指定した範囲の中から検索した文字列を他の文字列に置換するにはReplaceメソッドを利用します。
Replace メソッド
Range.Replace メソッド (Excel)パラメーター
.Replace メソッドには引数が多いので確認しておきましょう。
.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つだけ使います。あとは省略が可能です。
引数はWhatとReplacementの2つだけ使います。あとは省略が可能です。
範囲は、Range("A2:A5")です。
範囲を簡単に指定したい場合は、CurrentRegion プロパティを使うと便利です。
基準セルのセルが含まれる範囲で、空白行、空白列、空白セルで取り囲まれている領域を指定できます。
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ステートメントを利用します。
今回、同じ選択範囲について何度も操作を行うので、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
先に範囲を選択してからコードを実行する場合は、以下のように書くことができます。
コードを実行すると完全一致する文字列だけが置換されます。
次の回では、リストを使った連続置換をするマクロを作成します。