vba Vlookup по рабочим книгам

Кажется, у меня ошибка в синтаксической строке ниже. Я считаю, что проблема связана с параметром диапазона книги book1. Я не могу понять, почему. В основном я перехожу к vlookup через две книги.

Код вызывается из книги – book1. Как раз перед этой строкой книги кода – book2 активируется. Обе книги открыты. Я захватил код ошибки 2015, заменив левую сторону на вариантную переменную.

Я ценю любую помощь в этой проблеме vlookup. Благодарю.

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)] 

Вы предоставили только фрагмент кода, но сначала сначала убедитесь, что вы указали все переменные. Я также добавил несколько других, чтобы упростить и, возможно, помочь избежать ошибок.

 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 

введите описание изображения здесь

Давайте будем гением компьютера.