excel - 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。在运行过程中也会出现错误。
解决方案
你必须:
从中删除“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))
推荐阅读
- node.js - Nodejs express multer文件上传+路径包含双斜杠
- docker - 如何在 docker 中运行 qt-gui?
- tsql - SQL Server Merge Statement编译抛出错误关键字WHEN附近的语法不正确
- powershell - 右键单击 ps1 文件 > 编辑:不再与 ISE 关联(卸载 Sapien Powershell studio 后)
- azure - 如何从本地终端提取 Azure 订阅 ID
- android - 如何从点击的号码中获取电话号码(在其他应用程序上)并将其显示在我自己的应用程序中
- c++ - Cocos2d-x tilmap黑屏
- jmeter - Jmeter 5.3 - 如何在每个脚本之间以一定的时间间隔循环脚本
- python - Scrapy递归回调
- three.js - 如何在三个 JS 蒙皮示例中旋转骨架段?