目次
概要
Excel VBAでは、正規表現(RegExp)を用いることで、高度な文字列の検索・置換を効率的に行うことが可能です。本記事では、特定のパターンに一致する文字を一括で削除・置換する方法を紹介し、活用できる正規表現パターンの例もあわせて解説します。
サンプルコード
Sub ReplaceWithRegExp()
Dim regObj As Object
Dim targetCell As Range
' 正規表現オブジェクトを作成
Set regObj = CreateObject("VBScript.RegExp")
regObj.Global = True
regObj.Pattern = "\D" ' 数字以外を対象にする
' 対象範囲のデータを変換
For Each targetCell In Range("B2:B6")
targetCell.Offset(0, 1).Value = _
regObj.Replace(StrConv(targetCell.Value, vbNarrow), "")
Next
End Sub
コード解説
- CreateObject(“VBScript.RegExp”)
VBAから正規表現機能を利用するために、VBScriptのRegExpオブジェクトを作成します。 - Globalプロパティ
True
に設定することで、文字列内のすべての一致箇所を対象にします。 - Patternプロパティ
正規表現のパターンを設定します。例として\D
は「数字以外の全ての文字」を意味します。 - Replaceメソッド
指定したパターンに一致する文字を、任意の文字列に置き換えます。今回は空文字に置換し、数字だけを残します。 - StrConv関数
半角・全角変換などを行う関数です。例ではvbNarrow
を指定し、半角に統一しています。
よく使う正規表現パターン一覧
パターン | 意味 |
---|---|
[ABC] | AまたはBまたはC |
[^ABC] | A・B・C以外 |
? | 直前の文字が0回または1回出現 |
* | 直前の文字が0回以上出現 |
+ | 直前の文字が1回以上出現 |
^ | 行頭に一致 |
$ | 行末に一致 |
\n | 改行(LF) |
\r | 改行(CR) |
\t | タブ |
\d | 数字(0〜9) |
\D | 数字以外 |
\s | 空白文字 |
\S | 空白以外の文字 |
\ | エスケープ |
() | グルーピング |
$1, $2 | キャプチャグループの参照 |
応用例
- 電話番号や郵便番号からハイフンを削除
- 英数字以外の記号を一括除去
- 特定のキーワードを含む文章を抽出
- 日付形式の整形
まとめ
正規表現を活用すれば、複雑な文字列の処理も簡潔に記述できます。特に、大量のデータを一括変換する業務では、VBAと正規表現の組み合わせが非常に有効です。検索パターンを工夫することで、データクレンジングやフォーマット統一など、さまざまな場面で応用できます。