Replace関数で複数文字列の置換が可能かテストする : Excel VBA

これまでVBAでReplace関数で置換した場合、単語レベルでしか使ったことがなかったので、改行が含まれる複数行でも問題なく置換できるかテストします。

これが可能ならば、大量にあるHTMLファイルのお決まりの文字列をまとめて置換えしたり、削除することが可能になります。

Replace関数の構文については「Step8:AMPファイルで必要のない文字列をReplace関数で検索し削除する|Excelソフト」を参照してください。



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

Replace関数の複数行置換えテスト

下のシートは、C2に置換対象文字列、C3に検索する文字列、C4に置換える文字列が入力されています。
検索する文字列は大文字の「BUSINESS」を小文字の「business」に変えています。
置換える文字列は「受けておきます」を「受けます」に、「目的地」を「到着地」に、「BUSINESS」を「ビジネス」に変えています。
Replace関数の複数行置換えテスト

Replaceを使ったVBAを作成しました。
Replaceを使ったVBA

・引数のcountを省略し、置き換える文字列の個数を指定していません。
・compareの定数は、vbTextCompareにし大文字と小文字を区別していません。

Sub MyReplace()
    Range("C5") = Replace(Range("C2"), Range("C3"), Range("C4"), , , vbTextCompare)
End Sub

実行結果です。
問題なく置換ができています。
実行結果


見つからない場合のReplace関数の戻り値は、置換対象文字列になります。
一見すると置換できたかどうか分かりにくいので、事前にInstr関数でチェックするようにします。
事前にInstr関数でチェックする

・Instr関数で見つからない場合は「見つかりませんでした」と表示し、見つかった場合はReplaceを実行します。

Sub MyReplace()
    If InStr(1, Range("C2"), Range("C3"), vbTextCompare) > 0 Then
        Range("C5") = Replace(Range("C2"), Range("C3"), Range("C4"), , , vbTextCompare)
    Else
        Range("C5") = "見つかりませんでした"
    End If
End Sub

テストします。
検索する文字列を変更し実行すると、「見つかりませんでした」と表示できました。
検索する文字列を変更しテストする

最後の改行文字も正常に置換できるかテストしました。
検索する文字列の最後に改行を追加すると、改行も正常に置換られ、結果の改行が削除できています。
最後の改行文字も正常に置換できるかテストする

複数回の置換ができるかテストしました。
置換対象文字列を2つにしテストすると、2つとも正常に置換えられています。
複数回の置換ができるかテストする



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved