用vlookup替换application.vlookup(R1C1 ..)

时间:2015-07-23 12:39:45

标签: vba excel-vba excel

我正在使用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列中查找值并将其返回。这是我正在尝试通过我正在使用的第二位代码实现的,但它似乎无法工作。任何人都可以帮助我吗?

我已经玩了一段时间,但似乎无法解决!

1 个答案:

答案 0 :(得分:1)

您缺少Range对象的起始行,并且您希望公式中当前行的第15列中的值为:

Range("AI4:AI" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-21],'Risk Explorer greeks'!R2C1:R50000C3, 3, False),RC15)"
相关问题