はじめに

多量の行が表示されないように、このブログは1コンテンツしか表示されない。ブログアーカイブから、他の記事を捜してくれ。

環境作れし。
・gawk 3.1.5 for Windows をググッて入手。
・gawk.exeをpathの通ったフォルダにぶち込めし。
 (「windows パスを通す」ググッて)
 (面倒なら、C:\windowsにぶち込む)
・環境変数「awkpath」にスクリプトを保存するフォルダを設定。
 (「環境変数 設定 windows」ググッて)
 (面倒なら、C:\windowsに、紹介されているスクリプトぶち込む)

2014年5月2日金曜日

正規表現検索ワークシート関数 excel macro

クソみたいなexcelのfind関数の代わりにつかってくれ。
他マクロからの呼び出しやワークシート関数として使える。

ただし、検索できるのはソース文字列(orセル)中で最初にマッチした1件のみ。複数検索したいヤシは、For Eachループ内のmatchオブジェクトをナンとかしてくれ。ワークシート関数の体をなしたままだと何かとメンドーそーだ。

使い方

=RegExp(<検索対象>,<正規表現パターン>,<"S" or "P" or "L">)

ex.
=RegExp(C4,"「.*」","S")
   C4セルの中からかぎ括弧で囲まれた文字列を探す。

=RegExp("日月火水木金土",C4,"P")
 C4セルに書かれた文字を曜日並びから検索し、何個目の曜日なのか、文字位置を返す。

=RegExp(C4,"(YES|NO)","L")
 C4セルに書かれた文字が"YES"なら"3"、"NO"なら"2"のようにマッチした文字数を返す。

Macroのつぼ

WSH等で使われるComモジュールのRegExpをExcelから呼び出している。
残念な事に、"L","P"を指定したときに返ってくる数値は文字型だ。

まっとうに使いたいヤシは、改造して、直接マクロから呼びだすべし。
マクロ作るのメンドーで、ワークシート関数でナントカしたいヤシ、そのまま使ってくれ。アドイン(.xla)で作った方がイイと思う。



0 件のコメント:

コメントを投稿