我想将查找公式转换为Worksheet函数,但它会提示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
公式不起作用。我该如何解决错误?
答案 0 :(得分:1)
'trick' you are using with the LOOKUP
function不会轻易转换为VBA。你可以使用一个简单的Find
方法,反转搜索顺序(参数SearchDirection:=xlPrevious
),找到最后一个匹配项,然后使用Offset
函数遍历列以检索你的值想。
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