我正在使用应用程序。工作表函数执行如下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列中的值并返回该值。这就是我试图通过我使用的第二段代码来实现的,但它似乎不起作用。有人能帮我一下吗?
我一直在玩这个一段时间,但似乎无法解决!
您缺少Range对象的开始行,并且您希望公式中当前行的第15列中的值:
Range("AI4:AI" & LastRow).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-21],'Risk Explorer greeks'!R2C1:R50000C3, 3, False),RC15)"