我正在使用这个VB代码
Public Function LastVersionOwned(rCol As Range, versionOwned As Range) As Range
Set LastVersionOwned = Application.WorksheetFunction.Lookup(2, 1 / (rCol = rCol.Find("*", rCol.Cells(1), , , , xlPrevious)), versionOwned)
End Function
要做的是找到范围中的最后一个非空行,然后使用该值来获取行的标题,但是当我使用它时,它返回#VALUE! rCol是范围(我希望得到最后一个非空值的行列表,例如C12:F12),而versionOwned是表格的标题(也是一个范围,但是静态C11:F11)
如果我像这样使用它
Public Function LastVersionOwned(rCol As Range) As Range
Set LastVersionOwned rCol.Find("*", rCol.Cells(1), , , , xlPrevious)
End Function
我在excel中做=LOOKUP(2,1/(C12:F12=LastVersionOwened(C12:F12)),C$11:F$11)
它工作,任何想法我如何解决这个错误?
由于
答案 0 :(得分:2)
我认为问题在于您在公式上比较'数组到数组',并尝试在VBA中执行相同的操作,这是不可能的,因为您实际上将Range
与{{1}进行比较}}。实际比较VBA中的'Array to Array'将会更长一些。所以我为你提出了一个可行的替代方案......
Range
请告诉我这是否符合您的需求