Excel で文字列を正規表現で検索する関数を作る
文字列置換する関数を作る例はいろいろと見つかりますが、文字列検索する例は案外出てこなかったので書いてみます。
まず、ほとんどの手順は以下のページの内容の通りに実施します。
http://labs.timedia.co.jp/2011/09/using-regular-expression-in-excel-formulas.html
で、Visual Basic のコードだけ以下の内容にする。これでワークシートの中から "=RegexMatch(検索対象文字列、正規表現パターン)" でパターンマッチできるようになります。
Function RegexMatch(target As String, pattern As String, Optional g As Boolean = False, Optional ignoreCase As Boolean = False, Optional multiLine As Boolean = False) As Boolean Dim objRegEx Set objRegEx = CreateObject("VBScript.RegExp") objRegEx.Global = False objRegEx.multiLine = multiLine objRegEx.ignoreCase = ignoreCase objRegEx.pattern = pattern RegexFind = objRegEx.Test(target) End Function
もとのページでは "Dim r As New RegExp" のように記述されているのですが、これだと手元の Excel では「ユーザー定義型は定義されていません」のエラーが出るので動かなかったので、色々と調整したらコレに落ち着きました。