Excelとワイルドカード/正規表現検索

じゃー自分で作ればいいじゃん、って言うか、私は作ったけど、一応Excelの検索にもワイルドカードぐらいは実装されている。

?で任意の一文字、*で任意のn文字、~でエスケープ。

ちょっとした検索ぐらいならこれで事足りるし、FIND関数やIF関数でも(当然COUNTIF関数でも)使えるので、実用性が全くないわけではない。ないわけではないんだけどさ。やっぱさ、\dとか\wとか量指定子とか後方参照とかキメたいじゃん?っていうか、置換で後方参照ないのは致命的じゃん?

そんなわけで早速Excel-DNAで、と言いたいところだけど、サンプルコードが手元にないのでたまにはVBAとか言うクソ言語の話をしましょう。

VBAには正規表現を扱えるクラスはありませんが、VBScriptの方にはあります。RegExpです。もうちょっといい名前はなかったのか?

使い方やメタ文字に関してはこっちの方が参考になると思います。後方参照が$nではなく\nであることを除けば特に違和感なく使えるはずです。流石に先読み/戻り読みとかは実装されてないっぽいですが。

参照設定は「Microsoft VBScript Regular Expressions 5.5」です。early bindingはちょっと…って人はCreateObject(“VBScript.RegExp”)でもOK。まぁVB6.0が入ってれば動くからlate bindingする理由ってほとんどないと思いますけど。