office.notes@misora05

本館ブログのうち,Office・Windwsがらみのネタ+@を抜き出したもの.月水金更新予定.

正規表現関数を作ってみよう!@Excel (1)

Excelの七不思議の一つが,「なぜか頑なに正規表現をサポートしない」なんですよね――検索でも関数でも.
あれほど強力な技術をなぜ採用しないのか,ちょっと理解ができません.

理由の一つが,「正規表現を詳解しようと思ったら350-500ページもある本(↓)でぶん殴る勢いになるから」だったりしてw
Excelは多くの初級者も使うアプリケーションですからね.余計な手間をかけたくないのかも.

詳説 正規表現 第3版 正規表現技術入門 ――最新エンジン実装と理論的背景 (WEB+DB PRESS plus)

なお,LibreOfficeでは正規表現はサポートしているんですよね.
LibreOfficeの数少ない(‥!)メリットだと思います.

なければ作ろう,正規表現関数

ところが,実はVBAでは正規表現は使えるのです.
つまり,VBAでユーザ定義関数を作り,それをワークシート上から呼び出すことで,正規表現関数は自前で実装できてしまうのです*1

そこまで分かれば話は簡単だ――さぁ,作ろう.

前準備

先程「VBAでは正規表現は使える」とは書きましたが,すっぴん――そのままの状態では使えません.
Microsoft VBScript Regular Expressions 5.5」なるライブラリを参照設定してやる必要があります.

f:id:misora05:20190220214929p:plain

続いて,てきとーに標準モジュールを挿入し,

f:id:misora05:20190220215821p:plain

そのモジュールの宣言セクション*2

Public re as New RegExp

と記述しておきます.以上,前準備終わり.


次へ進む前に

以下の資料は読んでおいた方がいいかも.
正規表現って,実装によって使える・使えない表現があるし.


以下続く

misora05.hatenablog.com

*1:まさかとは思うけど,だからあえて実装していないということはないよな?

*2:最上部