#值!使用宏时

时间:2012-01-27 17:48:11

标签: excel vba excel-vba

我正在使用这个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) 它工作,任何想法我如何解决这个错误?

由于

1 个答案:

答案 0 :(得分:2)

我认为问题在于您在公式上比较'数组到数组',并尝试在VBA中执行相同的操作,这是不可能的,因为您实际上将Range与{{1}进行比较}}。实际比较VBA中的'Array to Array'将会更长一些。所以我为你提出了一个可行的替代方案......

Range

请告诉我这是否符合您的需求