Home » Excel VBA Rangeオブジェクト » セル検索 » Findで完全一致・部分一致を指定して検索するには

Findで完全一致・部分一致を指定して検索するには

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

Findで完全一致・部分一致を指定して検索するには

「excel vba find 完全一致」
「excel マクロ find 部分一致」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

Excel VBA(Visual Basic for Applications)の、Range.Findメソッドでセルの検索を行う際に、完全一致検索や部分一致検索を指定するにはどうすればいいのかを探している方による検索でしょうか。

[スポンサードリンク]

Range.Findメソッドで完全一致検索を行うサンプルマクロ

以下のような引数指定を行えば、完全一致検索となります。

Sub A列から東京という文字列を完全一致で検索して行番号を取得する()

 Dim rng As Range

 Set rng = _
   Range("A:A").Find(What:="東京", LookAt:=xlWhole)

 If rng Is Nothing Then
  MsgBox "みつかりませんでした。"
 Else
  MsgBox rng.Row
 End If

End Sub

RangeオブジェクトのFindメソッドの引数・LookAtに、XlLookAt列挙に定義されている定数・xlWholeを指定すると、

Findで完全一致・部分一致を指定して検索するには

完全一致で検索が行われます。

Range.Findメソッドで部分一致検索を行うサンプルマクロ

以下のような引数指定を行えば、部分一致検索となります。

Sub A列から東京という文字列を部分一致で検索して行番号を取得する()

 Dim rng As Range

 Set rng = _
   Range("A:A").Find(What:="東京", LookAt:= xlPart)

 If rng Is Nothing Then
  MsgBox "みつかりませんでした。"
 Else
  MsgBox rng.Row
 End If

End Sub

RangeオブジェクトのFindメソッドの引数・LookAtに、XlLookAt列挙に定義されている定数・xlPartを指定すると、

Findで完全一致・部分一致を指定して検索するには

部分一致で検索が行われます。

Range.Findメソッドの引数は残念

オブジェクトブラウザーで確認するとわかるとおり、RangeオブジェクトのFindメソッドは引数を9つも指定することができます。

このうち、引数・SearchDirectionだけは「As XlSearchDirection」という作りになっているため、

Findで完全一致・部分一致を指定して検索するには

コーディングの際に、XlSerchDirection列挙に定義されている定数が自動メンバー表示されますが、この記事のテーマである完全一致・部分一致を指定する引数・LookAtは、どういうわけだか「LookAt As XlLookAt」のような作りになっていません。

そのため、コーディング時に自動メンバー表示されません。残念。

Microsoftが、引数・SearchDirectionを「As XlSearchDirection」という作りに修正したときに、何故、引数・LookAtも「As XlLookAt」という形にしなかったのか、疑問が残る仕様です。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » セル検索 » Findで完全一致・部分一致を指定して検索するには

「セル検索」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.