我正在使用application.worksheetfunction执行vlookup,如下所示:
For i = 4 to LastRow
Cells(i, 35) = Application.WorksheetFunction.IfError(Application.VLookup(Cells(i, 12), Sheets("Risk Explorer greeks").Range("A1:C50000"), 3, 0), Cells(i, 15))
Next i
由于这需要很长时间,我尝试使用以下代码替换它:
Range("AI:AI" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-21],'Risk Explorer greeks'!R2C1:R50000C3, 3, False),"Range("O4:O" & LastRow)"
然而,它给了我一个错误,我相信是因为错误发生时最后一段代码。在我的第一段代码中,如果vlookup在单元格50中失败,则iferror将在第15行第50列中查找值并将其返回。这是我正在尝试通过我正在使用的第二位代码实现的,但它似乎无法工作。任何人都可以帮助我吗?
我已经玩了一段时间,但似乎无法解决!
答案 0 :(得分:1)
您缺少Range对象的起始行,并且您希望公式中当前行的第15列中的值为:
Range("AI4:AI" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-21],'Risk Explorer greeks'!R2C1:R50000C3, 3, False),RC15)"