以下代码:
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表中直接使用相同的逻辑,它可以工作吗?
非常感谢任何帮助......非常感谢
答案 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