无法获取WorksheetFunction类的Lookup属性

时间:2012-03-09 13:10:46

标签: excel vba worksheet-function

以下代码:

For i = startRow To startRow + (nRows - 1)    
Set lookUp = Range(col & i)
Range("I" & i) = IIf(WorksheetFunction.lookUp(lookUp, Sheets("P&C curves").Columns("A")) = lookUp, 1, 0)
Range("J" & i) = IIf(WorksheetFunction.lookUp(lookUp, Sheets("G Curve").Columns("A")) = lookUp, 1, 0)      
Next i

在代码中,我第一次调用WorksheetFunction.lookUp时一切正常,即它用1填充列找到的东西,否则它放零,但第二行不起作用。我收到错误:

  

无法获取工作表函数类的查找属性。

为什么会这样?如果我尝试在excel表中直接使用相同的逻辑,它可以工作吗?

非常感谢任何帮助......非常感谢

2 个答案:

答案 0 :(得分:1)

在这种情况下,由于数组中没有可用的查找值而出现错误。 如果我们在excel文件中编写公式,但在数组中没有查找值,则它仅返回#N/A,但在VBA中它返回Unable to get lookup property of the worksheetfunction class。而不是#N/A。因此,您需要在其之上添加On error resume。

第二种方法是可以使用循环的公式

答案 1 :(得分:0)

这是你在尝试的吗?

For I = startRow To startRow + (nRows - 1)
    Set Lookup = Range(col & I)

    On Error Resume Next

    Ret = WorksheetFunction.Lookup(Lookup, Sheets("P&C curves").Columns("A"))
    If Err.Number <> 0 Then
        Range("I" & I) = 0
        Err.Clear
    Else
        If Ret = Lookup Then Range("I" & I) = 1 Else Range("I" & I) = 0
    End If

    Ret = WorksheetFunction.Lookup(Lookup, Sheets("G Curve").Columns("A"))
    If Err.Number <> 0 Then
        Range("J" & I) = 0
        Err.Clear
    Else
        If Ret = Lookup Then Range("J" & I) = 1 Else Range("J" & I) = 0
    End If
Next I