TIM Labs

Excelの数式で正規表現を使う

| コメント(0) | トラックバック(0)

問題

VimとExcelを組み合わせて全く新しいSQLクエリーを生成する でも述べたように、諸事情で Excel を使う機会はよくあるのですが、 その時に困るのが文字列処理です。

Excel は組み込みで CLEANTRIMUPPERPHONETIC などの豊富な関数が用意されているものの、 何故か正規表現を使った文字列比較や文字列置換は標準で関数が用意されていません。 単純な処理ならば組み込み関数を組み合わせてどうにかできるものの、 「s/,+/,/gs/,$// ができたらなぁ......」 と思うことはしばしばあります。

どうにかして Excel の数式で正規表現を使うことはできないでしょうか。

解答

結論から言うと、デフォルトの状態では正規表現を使うことはできません。 しかし以下のステップを踏むことで正規表現が利用できます (以下の例では Excel 2007 を使用しています)。

  1. [開発] > [Visual Basic]を開く。

  2. Visual BasicのIDEのようなものが起動しますので、そこで[ツール] > [参照設定]を開きます。

  3. ダイアログが表示されるので、そこから[Microsoft VBScript Regular Expression 5.5]にチェックを入れ、[OK]ボタンを押下します。

  4. Visual BasicのIDEのようなもので[挿入] > [標準モジュール]を開きます。

  5. いかにもコードを書いてくれと言わんばかりのウィンドウが開くので、そこに以下のコードを入力します。

    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
    
  6. Visual BasicのIDEのようなものを終了します。

これで Excel の数式に5で書いた関数が使えるようになります。 例えば =S("Foo", "o+", "X") のような感じです:

これでややこしい文字列処理が多い日も安心です。 やりましたね。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/259

コメントする

このブログ記事について

このページは、kanaが2011年9月11日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Mercurial でセントラルリポジトリのマルチプルヘッドを禁止する」です。

次のブログ記事は「bash: readとパイプと環境変数」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。