在2个不同的工作簿中的vba vlookup,直到上一行的末尾

时间:2018-10-25 09:33:28

标签: excel vba excel-vba excel-formula

我有2个excel文件:

barkod.xlsx

campaign.xlsx

我需要在barkod.xlsx中执行vlookup命令。我想通过campaign.xlsx查找barkod.xlsx中的E列-A:B列。 我还尝试将公式加倍拖动到末尾的E的最后一个值。结果将写在barkod.xlsx的F列中。

我尝试使用以下代码:

Private Sub CommandButton5_Click()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim x As Workbook
Dim y As Workbook




'## Open all workbooks first:
Set x = Workbooks.Open("C:\Users\mammadov.ali\Desktop\macros\barkod.xlsx")
Set y = Workbooks.Open("C:\Users\mammadov.ali\Desktop\macros\csv.csv")
Set q = Workbooks.Open("C:\Users\mammadov.ali\Desktop\macros\campaign.xlsx")


'## Clear the workbook first:
y.Sheets("csv").Range("A:M").Clear


'## Insert the column in the barkod file:
x.Sheets("barkod").Range("F1").EntireColumn.Insert

'## Insert the column header in the barkod file:
x.Sheets("barkod").Range("E1").Offset(0, 1).Value = "Discounts"


With x.Sheets("barkod").Range("F2")
.FormulaR1C1 = "=VLOOKUP(RC[-1], [campaign.xlsx]Sheet1!RC[-5]:RC[-4], 2, 0)"
.AutoFill Destination:=x.Sheets("barkod").Range("F3")

    End With

这2天让我很挣扎。任何帮助将不胜感激。 我得到的是它没有显示正确的结果,而仅对:A2:B2执行vlookup。在运行过程中也会发生错误。

1 个答案:

答案 0 :(得分:1)

您必须:

  • [campaign.xlsx]Sheet1!RC[-5]:RC[-4], 2, 0)"

  • 中删除“ xlsx”和“ R”
  • 具有AutoFill方法的目标范围包含源范围

如下:

With x.Sheets("barkod").Range("F2")
    .FormulaR1C1 = "=VLOOKUP(RC[-1], [campaign]Sheet1!C[-5]:C[-4], 2, 0)"
    .AutoFill Destination:=.Resize(2) ' this will autofill F2 and F3
End With

如果您要自动填充F列中的单元格,而不是E列中的非空值,则可以使用:

    .AutoFill Destination:=.Resize(WorksheetFunction.CountA(.Offset(, -1).EntireColumn))