はじめに
Excelの標準機能では、セル内のテキストに対して正規表現を使った一致判定を行う機能がありません。しかし、VBAを使って独自のワークシート関数を作成することで、正規表現を活用した柔軟なテキスト処理が可能になります。今回は、Excel VBAを使って正規表現マッチを使ったカスタムワークシート関数を作成する方法を解説します。
正規表現マッチ関数の作成
Function RegexMatch(CellValue As String, Pattern As String) As Boolean
Dim Regex As Object
Set Regex = CreateObject("VBScript.RegExp")
With Regex
.Global = True
.IgnoreCase = False
.Pattern = Pattern
End With
RegexMatch = Regex.Test(CellValue)
End Function
このコードは、セル内のテキスト(CellValue)と正規表現パターン(Pattern)を引数に取り、正規表現が一致するかどうかを判断し、結果を真偽値(TrueまたはFalse)で返す関数です。
使用例
2.メールアドレスの形式が正しいかチェック
=RegexMatch(A2, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
A2セルにメールアドレス(例:test@example.com)が入力されていると仮定します。この正規表現パターンは、一般的なメールアドレスの形式をチェックします。
※この画像は、A列に電話番号とメールアドレスの正誤例、B列に正規表現文字列、C列に関数を入力して動作チェックしてみたところ。注意事項
- 正規表現のパターンは、場合によって複雑になります。正確なパターンを作成するには、正規表現に関する知識が必要です。
- 関数の挙動を変更するには、VBAコード内の.Globalや.IgnoreCaseの設定を変更してください。.Globalは、マッチングを全体で行うかどうかを設定するもので、.IgnoreCaseは、大文字・小文字を無視するかどうかを設定するものです。
まとめ
Excel VBAを使って正規表現マッチ関数を作成することで、標準のテキスト関数ではできない高度なテキスト処理が可能になります。また、正規表現を使いこなせば、さまざまなデータ整形やバリデーションが簡単にできるようになります。
また今回はワークシート関数として使用するためのコードを紹介しましたがVBAでの正規表現の扱い方は当然ながらマクロとして処理をするときにも応用可能なので参考にしてみてください。
0 件のコメント:
コメントを投稿