VBAのFindメソッドとは?関数の解説と使用例
Ecxelの標準機能である検索機能を使ったことはありますか?ExcelVBAでも似た処理を行うことができます。ここでは、Findメソッドの基本的な解説を行っていきます。
1.Findメソッドについて
1-1.Findメソッドとは
Findメソッドとは、指定したセル範囲内で特定の情報を検索する関数です。Excelでの「Ctrl + F」キーで表示される下記の検索機能とほぼ同じ機能が使えます。
1-2.Findメソッドの構文
Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
設定するオプション値は、以下の通りです。
Excelの検索機能で使用するウィンドウで、VBAの検索オプションと同じ機能が多くあり、オプションを吹き出しにしています。
2.Findメソッドの使用例
2-1.基本的な使用例
2-1-1.初期値設定
下記表を使って、検索のVBAを実行します。
表2.検索
愛知県 | 広島県 | 新潟県 | 東京都 |
愛媛県 | 香川県 | 神奈川県 | 徳島県 |
茨城県 | 高知県 | 青森県 | 栃木県 |
岡山県 | 佐賀県 | 静岡県 | 奈良県 |
沖縄県 | 埼玉県 | 石川県 | 富山県 |
岩手県 | 三重県 | 千葉県 | 福井県 |
岐阜県 | 山形県 | 大阪府 | 福岡県 |
宮崎県 | 山口県 | 大分県 | 福島県 |
宮城県 | 山梨県 | 長崎県 | 兵庫県 |
京都府 | 滋賀県 | 長野県 | 北海道 |
熊本県 | 鹿児島県 | 鳥取県 | 和歌山県 |
群馬県 | 秋田県 | 島根県 |
|
Sub sample01() Dim sampleRange As Range '検索するデータ Dim result As Range '検索結果を格納する Set sampleRange = Range("A1:E10") keyWord = "京都" '検索ワードを「京都」、完全一致で検索実施 Set result = sampleRange.Find(keyWord, LookAt:=xlPart) If result Is Nothing Then MsgBox "'" & keyWord & "'はありませんでした" Exit Sub Else Dim row As Integer row = result.row MsgBox "「" & result.Value & "」がヒットしました。" End If End Sub
実行結果:
2-2.使用で注意する点
第二引数以降を設定して検索を行うと、引数の設定が保存されます。別の設定で検索を行う際に、前回設定した引数を省略した場合は、前回設定した引数が反映されます。
例として、表1を対象として下記の検索オプションを指定して「京都府」を検索する処理を連続で行います。
1回目の検索のオプション設定
表1に対して、下記オプションを指定して検索
- 検索文字を「京都」
- 「部分一致」
- 検索順を「列を下端まで検索してから次の列を検索」
実行結果:
2回目の検索オプション設定
表1に対して、下記オプションを指定して検索
- 検索文字を「京都」
- 検索順を「行を右端まで検索してから次の列を検索」
実行結果:
1回目の検索オプション「部分検索」が残っているため、「東京都」が検索結果となってしまいます。使用するたびに、毎回オプションを明示的に指定する必要があります。
3.最後に
Findメソッドは、オプションを明示的に指定することで用途が広がります。
コメント