我有下面的代码。它将公式放置在正确的列中,但是用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
答案 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