複数個の文字列を一括で置換する
Excelで置換をするには
ショートカットキーCtrl+Fで表示されるウィンドウで
検索する文字列と置換後の文字列を指定し,
[置換]をクリックします。
複数個の文字列を置換したい場合は
1つずつ文字列を入力して置換していくことになります。
VBAで複数個の文字列を一括で置換してみます。
大まかな手順は次の通りです。
名前が"複数置換"のシートを作成して
検索する文字列と置換後の文字列を手入力する。
入力された文字列に対して
VBAで1つずつ検索・置換をしていく。
まず,検索・置換する文字列を入力するシートを作成します。
シートを追加し名前を"複数置換"にします。
このシートのA5セル以降に検索する文字列を,
B5セル以降に置換後の文字列を入力していく仕様とします。
次の画像を参考にしてください。
次のコードは
シート名"複数置換"の5行から15行に入力された文字列を
アクティブシートで検索・置換をします。
|
Sub macro20200503a() |
コードの説明をしていきます。
検索・置換する対象はアクティブシートです。
VBAで置換したらものは元に戻せないので,
コード実行前に
目的のシートが選択されているか確認するための
MsgBoxを表示させます。
[キャンセル]がクリックされると検索をしないでコードを終了します。
検索する文字列は変数s_word,
置換する文字列は変数r_wordに入れます。
For文を使って
5行から15行まで文字列を入れ替えていきます。
ある行の文字列が空の場合,検索をしないで次の行に行きます。
検索はFindメソッドを使用します。
What引数に検索したい文字列を指定します。
After引数に検索を開始するセルを指定します。
その他の引数は下記リンク先を参照ください。
Range.Find メソッド (Excel)
Findメソッドで見つかったセルは変数cに格納します。
検索結果がない場合cはNothingになります。
cがNothingでなければ,
検索した文字列が見つかったことがわかります。
最初に見つかったセルのアドレスを
変数adに入れておき,検索の終了の目標とします。
置換はReplaceメソッドを使用します。
詳しくは下記リンク先を参照ください。
Range.Replace メソッド (Excel)
[次を検索]は,FindNextメソッドを使用します。
[置換]と[次を検索]を
Do...While文を使って
変数cがNothingにならない限り続けます。
[置換]と[次を検索]の繰り返しの終了は
検索結果が一番最初のセルに戻った時,
また変数cがNothingになった時です。
この状態になったら
次の行の文字列を検索・置換していきます。
最終行までこの繰り返しです。
使用Ver:Win10, Excel For Office365
| 固定リンク
この記事へのコメントは終了しました。

コメント