VBA Vlookup跨工作簿

我在下面的语法行中似乎有错误。 我认为问题在于工作簿book1的范围参数。 我无法弄清楚为什么。 基本上我打算在2个工作簿上查找。

代码从工作簿 – book1中调用。 就在这行代码工作簿 – book2被激活之前。 这两个工作簿都是开放的。 我通过用variablesreplace左侧来捕获错误代码2015。

我感谢任何帮助,这个查找问题。 谢谢。

Cells(j, c + 2).value = [VLookup(workbooks(book2).sheets(5).range(Cells(j, c + 1)), workbooks(book1).sheets(4).range(cells(row1+2,1),cells(row2,col1)), 3, false)] 

你只提供了一小段代码,但首先要确保你已经定义了所有的variables。 我还增加了一些简化和可能帮助陷阱的错误。

 Sub VlookMultipleWorkbooks() Dim lookFor as String Dim srchRange as Range Dim book1 as Workbook Dim book2 as Workbook 'Set some Workbook variables: Set book1 = Workbooks("Book 1 Name") '<edit as needed Set book2 = Workbooks("Book 2 Name") '<edit as needed 'Set a string variable that we will search for: lookFor = book2.sheets(5).range(Cells(j, c + 1)) 'Define the range to be searched in Book1.Sheets(4): Set srchRange = book1.Sheets(4).Range(cells(row1+2,1).Address, cells(row2,col1).Address) 'This assumes that the Book2 is Open and you are on the desired active worksheet: ActiveSheet.Cells(j, c + 2).value = _ Application.WorksheetFunction.VLookup(lookFor, _ book1.Sheets(4).Range(srchRange.Address), 3, False) End Sub 

下面是一个简单的例子。

 Sub VlookMultipleWorkbooks() Dim lookFor As Range Dim srchRange As Range Dim book1 As Workbook Dim book2 As Workbook Dim book2Name As String book2Name = "test.xls" 'modify it as per your requirement Dim book2NamePath As String book2NamePath = ThisWorkbook.Path & "\" & book2Name Set book1 = ThisWorkbook If IsOpen(book2Name) = False Then Workbooks.Open (book2NamePath) Set book2 = Workbooks(book2Name) Set lookFor = book1.Sheets(1).Cells(2, 1) ' value to find Set srchRange = book2.Sheets(1).Range("B:C") 'source lookFor.Offset(0, 1).Value = Application.VLookup(lookFor, srchRange, 2, False) End Sub Function IsOpen(strWkbNm As String) As Boolean On Error Resume Next Dim wBook As Workbook Set wBook = Workbooks(strWkbNm) If wBook Is Nothing Then 'Not open IsOpen = False Set wBook = Nothing On Error GoTo 0 Else IsOpen = True Set wBook = Nothing On Error GoTo 0 End If End Function 

在这里输入图像说明