【发布时间】:2020-12-28 22:12:27
【问题描述】:
我正在尝试在 VBA 中编写一个引用另一个工作簿的 VLookup。基本上我正在尝试查找 2 个工作簿。
这是我的目标的简单概述:
- 在工作簿 1 的 A 列中的所有行中查找值
- 从工作簿 2 的 A 列(对应于工作簿 1 中的 A 列的值)和 C 列(要复制的值)中提取信息,并将其放在工作簿 1 的 B 列中的相应单元格(行)中。附加条件:(1)如果单元格中已经存在值,则覆盖;(2)如果没有为单元格找到值,则保持单元格不变。所以也没有#N/A。
- 继续并重复该过程,直到工作簿 1 的 A 列中没有更多条目
下面是我已经拥有的代码。我偶然发现代码不起作用的事实。对于 B 列中的每一行,我不断得到#N/As,而至少应该找到一些值并将其粘贴到某些单元格中。出于测试目的,我将 workbook2 中的引用表复制到 workbook1 中的工作表中,当我在同一个 workbook1 中引用该特定工作表时,代码似乎可以工作。
Sub Import()
Dim rw As Long, x As Range
Dim extwbk As Workbook, twb As Workbook
Set twb = ThisWorkbook
Set extwbk = Workbooks.Open("C:\Documents\workbook2.csv")
Set x = twb.Worksheets("Sheet1").Range("A1:H100")
With twb.Sheets("Sheet1")
For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
.Cells(rw,2) = Application.Vlookup(.Cells(rw,1).Value2,x,3,False)
Next rw
End With
End Sub
您在我的代码中看到错误吗?或者有没有人有更好的方法来完成这项任务?最好,我还想打开一个选定的文件,而不是引用完整路径。
提前致谢!
【问题讨论】:
-
请尝试格式化两个比较以相同方式的范围。在这种情况下,最好的格式是使用 TextToColumns (from Data)...
-
@FaneDuru 虽然扩展名不同,但格式相同
标签: excel vba excel-formula vlookup