LOOKUP公式来查找VBA中的最后一个值
我想将查找公式转换为工作表函数,但它会提示Type mismatch
错误。
这个公式工作正常。
=LOOKUP(2,1/(SalesDB!I6:I3005="FLOUR"),SalesDB!K6:K3005)
这会提示Type mismatch
错误
ActiveSheet.Range("Q9").Value = Application.WorksheetFunction.Lookup(2, 1 / (Sheets("SalesDB").Range("$I$6:$I$3005") = "FLOUR"), Sheets("SalesDB").Range("$K$6:$K$3005"))
我想查找列中的最后一个值,所以Vlookup
公式不起作用。 我怎样才能解决这个错误?
您使用LOOKUP
函数的“技巧”不会轻易转换为VBA。 您可以使用一个简单的Find
方法,将search顺序颠倒过来(参数SearchDirection:=xlPrevious
),它将查找最后一个匹配项,然后使用Offset
函数SearchDirection:=xlPrevious
列来检索所需的值。
Option Explicit Sub Test() ActiveSheet.Range("Q9").Value = LastVlookup("FLOUR", Sheets("SalesDB").Range("$I$6:$K$3005"), 3) End Sub Function LastVlookup(varLookup As Variant, rngData As Range, lngOffset As Long) As Variant LastVlookup = rngData.Find( _ What:=varLookup, _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchDirection:=xlPrevious).Offset(0, lngOffset - 1).Value End Function