Зашел в тупик с поиском решения такой задачи. Пытаюсь средствами VBA подтягивать данные посредством функции ВПР. Все вроде просто, но из-за того, что данные для поиска находятся в другой книге, ни как не получается.
Пример строки: Range("A1").Formula = "=VLOOKUP(КодСотрудника,'D:\Продажи\СПБ\сводная.xlsx'!ОбъемПродаж,3,0)"
Указанный выше пример работает, но как результат функции передать в переменную, а не в Range("A1").Formula? Если записать данную формулу в виде:
там последним сообщением я давал ответ как адаптировать функцию пользователя для работы с закрытой книгой. Только учитывайте - сначала необходимо диапазон указать когда книга открыта. Далее ничего менять уже не надо будет - при закрытии книги диапазон сам станет "ссылкой на закрытую книгу"
Похоже я неверно понял(смутило английское название функции). ВПР не может изначально принимать данные закрытой книги. Сначала книгу надо открыть, указать диапазон, а затем уже...Либо открыть, записать данные таблицы в массив, а массив в ВПР в макросе.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Андрей Васильев, у Вас ведь работает первый пример кода. Осталось только присвоить переменной значение ячейки. Я в таких случаях делаю один очень скрытый лист и использую его для подобных действий.
Sub bb()
Dim wb As Workbook
Set wb = GetObject("D:\Продажи\СПБ\сводная.xlsx")
'...
MyResult = WorksheetFunction.VLookup(КодСотрудника, wb.Names("ОбъемПродаж").RefersToRange, 3, 0)
'...
wb.Close 0
End Sub