masatoの日記

やっていきます

Excelで正規表現を使って置換するためのマクロについて、メモ

今日仕事でいつものようにエクセルを使っているとき、エクセルってワイルドカード使えんかったっけ、とふと思い、ググった。 で、実はエクセルはごくごく限られたワイルドカードしかサポートしていなくて、ワードみたいにあれこれできんのだった。

みんなエクセル文書はありふれているというのに、置換がまともにできないのは非常に不便ではないだろうか。

なので、VBAからRegexインスタンスを立ち上げて、セルをループしてやって置換すればいいと思った。

ざっくりした手順: 1.UsedRangeを変数に入れる 2.UsedRange変数をループして、中身と行列番号を多段配列とかその他の配列っぽいやつに収める 3.配列をループして、Whatを探し、見つかったらRegexの関数をCallして置換し、置換した文字列を返して、配列の行列番号から元のセルを参照してValueプロパティに戻してやる。

2は、高速化のためだ。1のRangeをループして3をやると、たぶんすごく遅い。全部配列に読み込んでからループすればかなり速くなる。

エクセルでこれができたらかなり便利になると思う。