无法获得WorksheetFunction类的Lookup属性

问题描述 投票:0回答:2

以下代码:

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工作表中使用相同的逻辑,那么它起作用吗?

非常感谢您的帮助...非常感谢

excel vba worksheet-function
2个回答
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

1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.