Excel VBO 新機能紹介: Find in Worksheet 編
Excelシートの中の検索ってシナリオ的にはあり得るけれど、標準VBOではなく、コレクションで読み取ってフィルターかけるとかが普通なんですが、データ量が多くなると重いので、できればExcel上でやりたいと。
そのようなときには今まではExtendedのFindを使ったんだけど、標準VBOの更新によりFind in Worksheetが増えたので、その比較と使い方説明。
MS Excel VBO - Extended: Find
標準ではなかったので、ExtendedのVBOを使います。ダウンロードはこちら。
このFind,癖があるというか… しかし他にないなかったのでこれを使いますw
Input
![](https://assets.st-note.com/img/1656658193016-i1K8ljLTk4.png?width=1200)
Range 検索範囲の指定
Find String 検索文字列
Starting Cell 検索開始位置の直前のセル
OutPut
![](https://assets.st-note.com/img/1656658285871-ruwQiLjOdq.png?width=1200)
なんとない!!
とりあえず使用例
![](https://assets.st-note.com/img/1656910380695-Fdmyr5G04R.png?width=1200)
見つけた結果をどう返すのかというと、Cellが移動するんでね。
なので、この後はだいたいGetActiveCellの出番が来ます。
じゃあ見つからなかったら…
Exceptionです。そんな…
何個も見つけるにはこれをループして… 使いにくいよ…
たぶん毎回Findコールするので遅い。そして美しくないw
MS Excel VBO: Find in Worksheet
MS Excel VBOを更新したら、「Find in Worksheet」というアクションが加わっていました。これ使えます。
※Version: 6.10.7を対象としています。このアクションがなかったらVBOをDXからダウンロードして更新してください。
Input
![](https://assets.st-note.com/img/1656658496918-e09NEVuNCP.png?width=1200)
ちょっとわかりにくいのがありますので解説します
![](https://assets.st-note.com/img/1656658595550-XoRPQSgv2n.png?width=1200)
Search in は検索対象なので、上記表のCかFかVのどれかを大文字一文字のテキスト形式で指定します。デフォルトは値を検索対象とします。
Search Order は検索の方向を指定します。立えばA列を検索した後にB列を検索するのであれば"C"、2行目を検索した後に3行目を検索するのであれば"R"を指定します。Search inと同様に大文字一文字のテキスト形式で指定します。デフォルトは行で検索します。
![](https://assets.st-note.com/img/1656659765888-oNJEeMYGSA.png?width=1200)
![](https://assets.st-note.com/img/1656660010183-nOdLWiTEwV.png?width=1200)
Output
![](https://assets.st-note.com/img/1656658665310-a44oiF88FE.png?width=1200)
MS Excel VBO::Find in Worksheet (Output)
![](https://assets.st-note.com/img/1656658691605-mBEmU6yrAX.png?width=1200)
検索した結果はコレクションで返ってきます。フィールドは「Cell」となり値は「$B$14」のように絶対参照で入ります。
![](https://assets.st-note.com/img/1656659274638-88GZWZg0qJ.png?width=1200)
返り値がコレクションなので複数を一発で見つけてくれるし、あとはループで回せるのですごく便利。
![](https://assets.st-note.com/img/1656909793615-mf15qBsZe8.png?width=1200)
やっぱりこちらの方が美しいw
今後はこちらを使おう。
この記事が気に入ったらサポートをしてみませんか?