エクセルVBAでワイルドカードを使って置換する

エクセルで置換えたい文字列が、統一されていない時、部分一致で検索して、文字を置換えたいときがありませんか。ここでは、エクセルVBAで、ワイルドカードを使って文字列の置換をしています。文字列の置換には、Replace メソッドを使います。Replace メソッドは、セルの範囲で文字列を他の文字列に置換します。例えば、Aを含む文字列を、文字列「A」で統一する置換えができます。置き換える文字列の数が少ないと、手作業で置換えてもいですが、セル範囲で文字列を置換えたい場合は、VBAで置換えた方が、簡単に一括で置換えられます。エクセルVBAでのワイルドカードを使った文字列の置換は、単純な置換よりも、複雑な文字の置換ができるようになります。Replace メソッドは、構文が長いので使い方が難しそうに思えますが、通常の置換は引数は省略するので、簡単に作成できます。

 

 

Replaceでワイルドカードを使って置換する

Replace メソッド

Replace メソッドは、文字列を他の文字列に置換します。

ワイルドカードを使った置換えは、Replace メソッドで一括でできます。

Replace メソッドの構文

object.Replace ( what, replacement [, lookat, searchorder, matchcase, matchbyte, searchformat, replaceformat ] )

 

 

ワイルドカードを使ってセル範囲を置換

エクセルVBAで、ワイルドカードを使った置換えをします。

置換には、Replace メソッドを使います。

部分一致で、セル範囲「B2:C8」の文字列を、他の文字列に置換えるコードです。

Sub セルの範囲を部分一致で置換()
Range(“B2:C8″).Replace What:=”*上級*”, Replacement:=”上級”
End Sub

使用例

下の表の、セル範囲「B2:C8」に入力されている文字列の置換をします。

「上級」の表示が、まばらになっています。全て「上級」で統一してみましょう。

 

1.標準モジュールに、コードを入力しましょう。

 

Range(“B2:C8″).Replace What:=”*上級*”, Replacement:=”上級”

2.VBAを実行すると、全て「上級」で統一されました!

 

 

ワイルドカードを使って1列を置換

部分一致で、A列の文字列を、他の文字列に置換えるコードです。

Sub 列を部分一致で置換()
Range(“A:A”).Replace What:=”株式会社*”, Replacement:=”(株)”
End Sub

使用例

下の表の、A列に入力されている文字列の置換をします。

A列の会社名の、「松田株式会社」は同じ会社ですが、会社名の後ろに支店名が入力されています。

支店名を削除して、「松田株式会社」で統一してみましょう。

 

 

1.標準モジュールに、コードを入力しましょう。

 

Range(“A:A”).Replace What:=”松田株式会社*”, Replacement:=”松田株式会社”

2.VBAを実行すると、支店名が削除されて、「松田株式会社」で統一されました!

 

ワイルドカードを使った複雑な置換

エクセルで検索、置換えはよく使う機能です。ですが、決まった文字列の置換え作業がよくある場合は、エクセルVBAを使った方が簡単にできます。文字列が統一されていない時は、ワイルドカードを使うと文字列を統一することもできます。エクセルVBAでのワイルドカードを使った置換えは、通常の使い方と同じです。「*」アスタリスク、「?」疑問符が使えます。例えば、会社名や商品名などが統一されていない時、ワイルドカードを使うと一括で、バラバラだった文字が統一できます。エクセルVBAで、ワールドカードを使った置換えは、利用法が色々あります。ワイルドカードを使って文字列の中にあるスペースを取り除き、かつ文字の統一もできるので、ぜひお試しください。

こちらの記事もご覧ください。⇒エクセルVBAで、シート全体を一括で置換する