【发布时间】:2015-08-25 21:18:15
【问题描述】:
我正在尝试使用 VBA 的 VLookup 将数据从一个 excel 文件放置到另一个文件中,但没有成功。
没有显示错误,也没有任何反应。我的单元格没有被填充,尽管经过验证,它们应该。我不能调试更多,因为关于路径、工作表名称和单元格行的一切似乎都很好。在 B 列(包含唯一编号)的键匹配之后,我试图从源文件(SourceFile.xlsx)中获取一个值。
我在打开和不打开源文件的情况下尝试了以下代码,结果完全相同:
If Application.WorksheetFunction.VLookup(.Range("B" & cell.Row), Workbooks("C:\Users\halpsb\Desktop\projet_macro\SourceFile.xlsx").Sheets("Projects_2015").Range("B" & cell.Row), 9, False) = "Yes" Then
.Range("D" & cell.Row) = Application.WorksheetFunction.VLookup(.Range("B" & cell.Row), Workbooks("C:\Users\halpsb\Desktop\projet_macro\SourceFile.xlsx").Sheets("Projects_2015").Range("B" & cell.Row), 7, False)
Else
.Range("D" & cell.Row) = ""
End If
提前感谢您的任何帮助。
编辑:正如下面的评论中所指出的,第 7 列用于我的测试,并且在源文件中包含“是”或“否”字符串。根据此值,源文件的第 9 列用于获取数据并将其放入我的原始文件中。
【问题讨论】:
-
查看如何在 VB 中进行 vlookup 的快速方法是打开宏记录器,将公式输入到获得结果的位置(也打开其他电子表格(
SourceFile.xlsx). 然后,当您输入公式并显示您想要的结果时,关闭您的SourceFile.xlsx,公式将使用文件路径更新。在此处发布该宏,我们可以根据需要进行调整。另外,正如@HarveyFrench 所述,您的 vlookup 范围是单个单元格(Range("B" & cel.row))...可能会导致问题。