Если вы хотите использовать синтаксис и скорость SQL в VBA, вам нужно использовать соединитель ADO DB. По моему опыту, это было в 4 раза быстрее, чем использование собственных функций Excel для поиска данных.
Это длинная тема, требующая прочтения нескольких статей. Гораздо больше информации, чем должно поместиться в одном SO сообщении.
Вот пример статьи:
https://technet.microsoft.com/en-us/library/ee692882.aspx
Вот код из этого примера:
On Error Resume Next
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &H0001
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Scripts\Test.xls;" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
objRecordset.Open "Select * FROM [Sheet1$] Where Number = 2", _
objConnection, adOpenStatic, adLockOptimistic, adCmdText
Do Until objRecordset.EOF
Wscript.Echo objRecordset.Fields.Item("Name"), _
objRecordset.Fields.Item("Number")
objRecordset.MoveNext
Loop