VBA中的Vlookup FormulaR1C1错误

时间:2018-08-07 11:02:49

标签: excel vba excel-vba excel-formula vlookup

我有下面的代码。它将公式放置在正确的列中,但是用B:D:D覆盖了B:C。如果我手动将其更改回来,该公式将起作用。谁能告诉我覆盖的情况吗?我正在从另一个工作表中获取VLOOKUP中的数据。

Sub vlook()

    Dim llastrow As Long       

    With Sheets("Risk")
    llastrow = .Cells(.Rows.Count, "B").End(xlUp).Row
    With .Range("D2:D" & llastrow)
        .FormulaR1C1 = "=VLOOKUP(RC2, IAVA!B:C, 2, FALSE)"
        '.Value = .Value
        End With
    End With

End Sub

1 个答案:

答案 0 :(得分:1)

如果您使用的是FormulaR1C1,则它的格式为R1C1。您正在传递某种混合格式-RC2, IAVA!B:C,-第一个参数是RC,第二个参数是A1B1。因此,Excel和VBA会产生一些奇怪的B:D:D。 工作正常:

   Sub vlook()

        Dim llastrow As Long
        With Sheets("Risk")
        llastrow = .Cells(.Rows.Count, "B").End(xlUp).Row
        With .Range("D2:D" & llastrow)
            .FormulaR1C1 = "=VLOOKUP(RC2, IAVA!C[-2]:C[-1], 2, FALSE)"
            '.Value = .Value
            End With
        End With
    End Sub