にゃあ

Excelの正規表現関数を作る

「エクセルで正規表現を使いたい。」

そんな要望は意外と多いと思いますが、エクセルでは標準で正規表現の関数が用意されていないのです。そのため、ワークシート上で、ちょっとした正規表現が使えれば、用が足りてしまいそうな検索や置換といった処理が大変面倒になってしまいます。

エクセルでも、正規表現が使えたらいいのになあと思っていたら、自前の関数を定義してしまえば、エクセルでも正規表現が使えるということがわかりました。

Excel2007でのおもな手順は次のとおりです。

  1. 「開発」→「Visual Basic」をクリック
  2. ウインドウが出たら、「挿入」→「標準モジュール」
  3. 次のコードをそこにコピペする
    Function RegReplace(Regex, Replace, TargetText)

    Dim re As RegExp

    Set re = New RegExp
    re.Pattern = Regex
    RegReplace = re.Replace(TargetText, Replace)

    End Function


    Function RegMatch(Regex, TargetText)


    Dim re As RegExp

    Set re = New RegExp
    re.Pattern = Regex
    RegMatch = re.Test(TargetText)

    End Functio
  4. 最後に、ワークシートに戻り任意のセルに「=RegMatch()」「=RegReplace()」関数を入力する。

つづいて、関数の使い方を説明します。

RegMatch(Regex, TargetText)

引数1 Regex : 正規表現を記述します。
引数2 TargetText : 対象文字列。マッチするかどうかを調べたい文字列を割り当てます。もちろん、セル番地でもかまいません。
戻り値 Bool


RegReplace(Regex, Replace, TargetText)

引数1 Regex : 置換ルールを正規表現で記述します。
引数2 Replace : 置換後の文字列を記述します。$1なども使えます。
引数3 TargetText : 対象文字列。置換する文字列を割り当てます。セル番地可。


これでエクセルで、正規表現がつかえるようになったのではないかと思います。

注意しなければならないのが、エクセルでの正規表現は非常に重く、時間がかかるという点です。スペックの低いコンピュータでは、正規表現の処理にかなり時間がかかります。特に、エクセルはデフォルトで再計算を実行してしまうので、再計算を手動にするように設定を変更するなどして、工夫する必要があるかとおもいます。

コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/112

コメントを書く

お名前* URL
本文*
合い言葉* ←「blatoeerler」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

コメントはないです。誰かコメント書いてよぅ…。

このブログの著者


Suinと申します。

@suin on Twitter

サブメニュー

最近気になるモノ!

WindowsからMacに乗り換えて半年ですが、Macは細かいところまで丁寧に作られていて、親切なユーザーインターフェイスが気に入ってます。iMacはMagic Mouseと洗練されたデザインのBluetoothキーボードがついてくるので、お得だなあ、なんて思ってます。私に買ってもいいという方、いたら教えてください 笑。

最近のエントリ

XOOPS Cube Dev Ring

最近のコメント

最近のトラックバック

ひとりで喜ぶログ
デュラララに登場するチャットを再現した (04/09)
ひとりで喜ぶログ
デュラララに登場するチャットを再現した (03/28)
http://www15.atpages.jp/~classicalstudio/wordpress/?p=50
getcwd()とdirname(__FILE__)は違う結果になるときがある (12/22)
Re:
CSSのtext-align:center;は<div>には通用しない (12/15)
XOOPS専門-株式会社RYUS - d3blog
Shiori 1.02 (12/02)
9deMaio.com - blog
Koins 1.00 (11/11)
インターネット覚え書き「ビボウログ」
CSSのtext-align:center;は<div>には通用しない (09/16)
hinoeuma1966
CSSのtext-align:center;は<div>には通用しない (07/03)
Suin.org
ブログ作ってみた (03/23)
Suin.org
ブログ作ってみた (03/23)