首页 > 解决方案 > vba vlookup 在 2 个不同的工作簿中直到上一行的末尾

问题描述

我有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。在运行过程中也会出现错误。

标签: excelvbaexcel-formula

解决方案


你必须:

  • 从中删除“xlsx”和“R”[campaign.xlsx]Sheet1!RC[-5]:RC[-4], 2, 0)"

  • 方法的目标范围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))

推荐阅读