无法让VLookup与其他Excel文件一起使用

时间:2015-08-24 15:25:31

标签: excel vba vlookup

我正在尝试使用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列用于获取数据并将其放在原始文件中。

1 个答案:

答案 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"