VimとExcelを組み合わせて全く新しいSQLクエリーを生成する
でも述べたように、諸事情で Excel を使う機会はよくあるのですが、
その時に困るのが文字列処理です。
Excel は組み込みでCLEAN
、TRIM
、UPPER
、PHONETIC
などの豊富な関数が用意されているものの、
何故か正規表現を使った文字列比較や文字列置換は標準で関数が用意されていません。
単純な処理ならば組み込み関数を組み合わせてどうにかできるものの、
「s/,+/,/g
や s/,$//
ができたらなぁ……」
と思うことはしばしばあります。
どうにかして Excel の数式で正規表現を使うことはできないでしょうか。
結論から言うと、デフォルトの状態では正規表現を使うことはできません。
しかし以下のステップを踏むことで正規表現が利用できます
(以下の例では Excel 2007 を使用しています)。
Function S(target As String, pattern As String, replacement As String, Optional g As Boolean = False, Optional ignoreCase As Boolean = False, Optional multiLine As Boolean = False) As String
Dim r As New RegExp
r.MultiLine = multiLine
r.Global = g
r.IgnoreCase = ignoreCase
r.Pattern = pattern
S = r.Replace(target, replacement)
End Function
これで Excel の数式に5で書いた関数が使えるようになります。
例えば =S("Foo", "o+", "X")
のような感じです:
これでややこしい文字列処理が多い日も安心です。
やりましたね。