Excelの標準機能の置換では正規表現が使えない

ブックの複数のシートや一部のシート、または、指定したセル範囲の中にあるセルから、一部の文字列を削除したり別の文字列に置換したい場合があります。

誤記や内容変更などによるものが多いでしょうね。

Excelでそれを行う場合は置換機能を利用すると実現できます。Ctrl + Fキーで検索と置換ダイアログを開き、置換タブに切り替えて「検索する文字列」欄に削除したい文字列を書いて、置換後の文字列」欄を空欄にして、「次を検索」ボタンを押して「置換」ボタンを押すと削除および置換が行われます。

通常はこれでいいのですが、正規表現が使えないというのは不便ですし、自動実行しなければならない場合はやはりVBAを使った方がラクになります。

以下にセル範囲から指定した文字列を削除するマクロを紹介します。正規表現の利用はオプションになっており、正規表現が分からなくても利用できます。


事前設定

以下のVBAコードは事前に正規表現の参照設定をしておく必要があります。

VBAの画面でツールメニュー→参照設定のダイアログを開き、「Microsoft VBScript Regular Expressions 5.5」にチェックを付けることで正規表現のRegExpクラスが利用できるようになります。


指定セル範囲から削除対象文字列を別の文字列に置換するマクロ

以下の関数は、指定セル範囲にある全てのセルから削除対象文字列を置換後文字列に置き換えます。

正規表現も利用することが出来ます。正規表現のパターンはRegExpクラスに準拠します。

処理の概要は、引数1のセル範囲の文字列を、引数2の削除対象文字列を引数3の置換後文字列に置換する、という内容です。

また引数4の正規表現フラグで正規表現を使う場合かそうでないかを処理中のIf文で分岐しています。

処理の内容はコメントを参考にしてください。


利用方法

ひらがなを削除し、「セル」を「Cell」に置換しています。

正規表現を利用しない場合は6行目のように4番目の引数は省略して構いません。

実行前

実行後

このページの先頭あたりをサンプルとして利用しています。

こんな感じで削除、置換が実行されます。このサンプルはひらがなを削除したためか、中国語みたいになっちゃいました。