VBA セルの位置検索(WorksheetFunction.Match)




WorksheetFunction.Match(検査値,検査範囲,0)


検査範囲内でで検査値に合致する位置を返すメソッドです。
Findメソッドが遅く感じている部分がありましたがこちらに変更するとだいぶ早くなりました。


名前 説明 備考
Arg1 検査値 範囲内で検索する値
Arg2 検査範囲 検索する範囲
Arg3 検査方法 -1:検査値以上の最小値
0:検査値に完全一致する値
1:検査値以下の最大値

検査値方法Arg3は既定値は1ですが完全一致する値があればどれでも同じ結果になります。


Sub SampleMatch()
 Dim r As Long
 'ABCという検査値を"シートのA列"から探す
 r = WorksheetFunction.Match("ABC", Worksheets(1).Columns("A"), 0)
  
 MsgBox CelRow
End Sub
メッセージボックスに見つけた行数を返します。


検査値が検査範囲にない場合や検査値がブランク(="")の場合は
「worksheetfunctionクラスのmatchプロパティを取得できません」


と出るのでMatchメソッドの前に
On Error GoToや
On Error Resume Next
もしくは
If 検査値 <> "" Then 
などで回避するのが良さそうです。


参照・類似ページ
文字列検索[Find]メソッド