VBAで正規表現を用いたデータ置換の自動化と活用例

目次

概要

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

コード解説

  1. CreateObject(“VBScript.RegExp”)
    VBAから正規表現機能を利用するために、VBScriptのRegExpオブジェクトを作成します。
  2. Globalプロパティ
    True に設定することで、文字列内のすべての一致箇所を対象にします。
  3. Patternプロパティ
    正規表現のパターンを設定します。例として \D は「数字以外の全ての文字」を意味します。
  4. Replaceメソッド
    指定したパターンに一致する文字を、任意の文字列に置き換えます。今回は空文字に置換し、数字だけを残します。
  5. 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と正規表現の組み合わせが非常に有効です。検索パターンを工夫することで、データクレンジングやフォーマット統一など、さまざまな場面で応用できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次