Excel VBO 新機能紹介: Find in Worksheet 編

Excelシートの中の検索ってシナリオ的にはあり得るけれど、標準VBOではなく、コレクションで読み取ってフィルターかけるとかが普通なんですが、データ量が多くなると重いので、できればExcel上でやりたいと。
そのようなときには今まではExtendedのFindを使ったんだけど、標準VBOの更新によりFind in Worksheetが増えたので、その比較と使い方説明。

MS Excel VBO - Extended: Find

標準ではなかったので、ExtendedのVBOを使います。ダウンロードはこちら
このFind,癖があるというか… しかし他にないなかったのでこれを使いますw

Input

MS Excel VBO - Extended::Find (Input)

Range            検索範囲の指定
Find String     検索文字列
Starting Cell   検索開始位置の直前のセル

OutPut

MS Excel VBO - Extended::Find (Output)

なんとない!!
とりあえず使用例

例) Find

見つけた結果をどう返すのかというと、Cellが移動するんでね。
なので、この後はだいたいGetActiveCellの出番が来ます。
じゃあ見つからなかったら…
Exceptionです。そんな…
何個も見つけるにはこれをループして… 使いにくいよ…
たぶん毎回Findコールするので遅い。そして美しくないw

MS Excel VBO: Find in Worksheet

MS Excel VBOを更新したら、「Find in Worksheet」というアクションが加わっていました。これ使えます。
Version: 6.10.7を対象としています。このアクションがなかったらVBOをDXからダウンロードして更新してください。

Input

MS Excel VBO::Find in Worksheet (Input)

ちょっとわかりにくいのがありますので解説します

入力パラーメーター一覧

Search in は検索対象なので、上記表のCかFかVのどれかを大文字一文字のテキスト形式で指定します。デフォルトは値を検索対象とします。
Search Order は検索の方向を指定します。立えばA列を検索した後にB列を検索するのであれば"C"、2行目を検索した後に3行目を検索するのであれば"R"を指定します。Search inと同様に大文字一文字のテキスト形式で指定します。デフォルトは行で検索します。

"C": by Columns
"R": by Rows

Output


MS Excel VBO::Find in Worksheet (Output)
出力パラメーター一覧

検索した結果はコレクションで返ってきます。フィールドは「Cell」となり値は「$B$14」のように絶対参照で入ります。

出力コレクション例

返り値がコレクションなので複数を一発で見つけてくれるし、あとはループで回せるのですごく便利。

例) Find in Worksheet

やっぱりこちらの方が美しいw
今後はこちらを使おう。

この記事が気に入ったらサポートをしてみませんか?