Excel(エクセル)Findメソッドとは
皆さんExcel VBAのFindメソッドとはなにかをご存じでしょうか?FindメソッドとはVBAで検索や置換などの機能を提供するメソッドです。このメソッドを使用することで、指定した文字列を含むセルや範囲を検索し、該当するセルや範囲を返すことができます。
findメソッドは、Rangeオブジェクトのメソッドであり、以下のよう記述します。RangeObject.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
引数の詳細は以下のとおりです。すべての引数を記入する必要はありません。
- What:検索する文字列を指定します。
- After:検索を開始するセルを指定します。省略可能で、指定しない場合は範囲全体から検索を開始します。
- LookIn:検索する範囲を指定します。省略可能で、指定しない場合はセルの値を検索します。
- LookAt:検索する文字列の種類を指定します。xlPartを指定すると部分一致、xlWholeを指定すると完全一致で検索を行います。省略可能で、指定しない場合は部分一致で検索を行います。
- SearchOrder:検索する順序を指定します。省略可能で、指定しない場合は行優先で検索を行います。
- SearchDirection:検索する方向を指定します。省略可能で、指定しない場合は下方向に検索を行います。
- MatchCase:大文字小文字を区別するかどうかを指定します。省略可能で、指定しない場合は大文字小文字を区別しません。
- MatchByte:全角半角を区別するかどうかを指定します。省略可能で、指定しない場合は全角半角を区別しません。
- SearchFormat:セルの書式を検索対象にするかどうかを指定します。省略可能で、指定しない場合は書式を検索対象にしません。
今回の記事ではExcel VBAのFindメソッドで完全一致で検索する方法をご紹介します。
Excel(エクセル)VBAのFindメソッドで完全一致で検索する方法
では、早速ですがExcel VBAのFindメソッドで完全一致で検索する方法をご紹介していきます。
基本的な使用方法
1つ目の例として基本的な使用方法をご紹介します。以下のようなコードを記述することで、A1からA10の範囲内で、”apple”という文字列を完全一致で検索し、該当するセルのアドレスを表示することができます。
Sub FindExactMatch()
Dim rng As Range
Set rng = Range("A1:A10")
Dim cell As Range
Set cell = rng.Find("apple", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Not cell Is Nothing Then
MsgBox "セルのアドレス: " & cell.Address
Else
MsgBox "Not found"
End If
End Sub
上記のコードでは、範囲A1:A10をrng変数にセットして、Findメソッドで”apple”という文字列を完全一致で検索しています。その結果、該当するセルがある場合は、そのアドレスをメッセージボックスで表示します。もし該当するセルがない場合は、「Not found」というメッセージを表示します。
このように、Findメソッドを使用することで、Excelのセルや範囲を効率的に検索することができます。完全一致で検索を行う場合は、LookAt引数にxlWholeを指定し、MatchCase引数にTrueを指定することで実現できます。
なお、部分一致で検索を行う場合は、LookAt引数にxlPartを指定することで実現できます。また、検索を開始するセルを指定する場合は、After引数に対象のセルを指定することができます。
テーブルの中から検索する方法
2つ目の例としてテーブルの中から検索する方法をご紹介します。以下のコードでは検索対象となるテーブルがあるとし、そのテーブルの中から特定のデータを完全一致で検索するコードを示します。
Sub SearchData()
Dim targetSheet As Worksheet
Set targetSheet = ThisWorkbook.Sheets("Sheet1")
Dim targetTable As ListObject
Set targetTable = targetSheet.ListObjects("Table1")
Dim searchValue As String
searchValue = "1002"
Dim foundCell As Range
Set foundCell = targetTable.Range.Find(searchValue, , , xlWhole, , , True)
If Not foundCell Is Nothing Then
MsgBox "セルのアドレス: " & foundCell.Address
Else
MsgBox "Not found"
End If
End Sub
上記のコードでは、”Sheet1″という名前のシートにある”Table1″という名前のテーブルを検索対象にし、その中から”1002″というデータを完全一致で検索しています。検索結果が見つかった場合は、そのセルのアドレスをメッセージボックスで表示します。
以上のように、Findメソッドを使用することで、Excel VBAでセルや範囲を効率的に検索することができます。検索対象のデータがどのような形式で保存されているかに応じて、検索方法や引数の指定を変更することができます。
Excelの操作方法は実際に手を動かし、身につけていきましょう
今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcel VBAのFindメソッドで完全一致で検索する方法についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。
WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。
コメント