pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


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 では「ユーザー定義型は定義されていません」のエラーが出るので動かなかったので、色々と調整したらコレに落ち着きました。