在VBA中填写vlookup

时间:2016-06-06 20:24:21

标签: vba vlookup

我使用vlookup从另一张表中提取日期,并且我引用了表单中我希望它拉到的单元格。我想拖动vlookup,但我无法弄清楚如何锚定公式,以便在我向下拖动时保持不变。我也引用了细胞" I2"然后我想让Vlookup参考" I3"等等,但我不确定如何编码。任何帮助,将不胜感激!这是我的代码:

Dim lastrow As Long
    Dim StoreData As Range
    lastrow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
    Set StoreData = Sheets("List of Stores").Range("A2:C" & lastrow)

    Sheets("SJ360 for Source 140").Select
    Range("H1").Select
    Selection.EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove





On Error GoTo myerrorhandler:
    Dim x
    With ThisWorkbook.Worksheets("SJ360 for Source 140")
    x = Application.WorksheetFunction.VLookup(Range("I2"), StoreData, 3, False)
    Range("H2").Value = x

    End With

    Dim FillFormula As Variant
    x = x + 1

    With ThisWorkbook.Sheets("SJ360 for Source 140")
    Range("H2").Select
    ActiveCell.Offset(x, 0).Select
    FillFormula = "VLookup(x), StoreData, 3, False)"
    .Range("H2:H&lastrow").Formula = FillFormula
    .Range("H&lastrow").FillDown
    End With
myerrorhandler:
            If Err.Number = 1004 Then
            MsgBox "Value not found"
            End If

我试着这样做,所以x会是" I2"那么" I3"等但我做得不对。

1 个答案:

答案 0 :(得分:1)

试试这个。当尝试在一个范围内填充相同的公式时,请使用R1C1:

Dim lastrow As Long
Dim StoreData As Range
lastrow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
Set StoreData = Sheets("List of Stores").Range("A2:C" & lastrow)

With Sheets("SJ360 for Source 140")
    .Range("H1").EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    .Range("H2:H" & lastrow).FormulaR1C1 = "Vlookup(RC1," & StoreData.Address(1, 1, xlR1C1, True) & ",2,False)"
End With

如果你想要的只是单元格中的值,那么使用它:

Dim lastrow As Long
Dim StoreData As Range
lastrow = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
Set StoreData = Sheets("List of Stores").Range("A2:C" & lastrow)

With Sheets("SJ360 for Source 140")
    .Range("H1").EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    .Range("H2:H" & lastrow).Value = .Evaluate("INDEX(Vlookup(I2:I" & lastrow & "," & StoreData.Address(1, 1,,True) & ",2,False),)")
End With