我正在尝试使用VBA的VLookup将数据从一个excel文件放到另一个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列用于获取数据并将其放在原始文件中。
答案 0 :(得分:0)
你的Vlookup公式包含一个“7”和一个“9”,因为他们试图从第二个参数指定的范围内的第7和第9列检索数据。
但是,第二个参数只包含一列,这将导致错误
你可以添加类似于下面例子的错误handlin
Sub aa()
On Error Resume Next
Debug.Print Application.WorksheetFunction.VLookup(2, Sheet1.Range("E4:E10"), 3, False)
if err.number <> 0 then
Debug.Print Err.Number, Err.Description
' an error occurred!
end if
End Sub
考虑一下。第二个参数是一列! 9正试图获得第9列!
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"