Примерно год назад обращался за помощью на форум, так как очень нуждался в более совершенной, или так сказать функциональной формуле ИНДЕКС+ПОИСКПОЗ. В результате была получена очень гибкая и функциональная формула, подробнее по ссылке, огромное спасибо за помощь vikttur формула работает и облегчает жизнь) Но теперь возник следующий вопрос. Данная формула, а именно ИНДЕКС+МАКС(ЕСЛИ=дипазон+СТОЛБЕЦ работает с закрытыми файлами, ранее это был один файл, теперь их много((( Можно ли что-то добавить в формулу, чтобы она переключалась между файлами исходя из имени которое указано в ячейке. Фактически , место расположения, диапазоны и названия листов с которых достаются данные абсолютно одинаковые, а вот названия файлов разные.
На днях обсуждали уже где-то. Был предложен вариант - заранее прописать все варианты формул, а нужный вариант выбирать уже затем исходя из введённого имени файла.
Так формула будет одинаковая, просто имя файла будет меняться, только записать формулы наперед не очень удобно. Можно реализовать просто динамический поиск по имени файла
Я предложил вариант без макросов, только формулами. А динамический поиск по имени файла - это только макрос, который Вы не просили: "Можно ли что-то добавить в формулу, чтобы она переключалась между файлами исходя из имени которое указано в ячейке. "
Можно ли с помощью формулы СЦЕПИТЬ, осуществить переключение между файлами? То есть протягиваем формулу, Индекс, внутри которой диапазон индекса такой же, только меняется имя файла. Делаем: внутри в пути к файлу, СЦЕПИТЬ, и сцепляем новое название, которое берем из указанной ячейки...как то так. Вот только проблема в том, что такая формула неактивная. Может есть макрос какой-то который активирует такие формулы? Я уже искал когда-то такой
Сцепить не получится. А макросом можно сгенерить нужную формулу и прописать её в ячейку. Или сразу в UDF и извлечь нужные данные - делали пару раз тут на днях такое, можно поискать по "ExecuteExcel4Macro" Или вот цитата:
Код
В VBA нет метода получения значения из закрытого файла рабочей книги. Но можно воспользоваться возможностью управления ссылками на файлы. Функция которая получает значения из закрытой книги, выполняется в результате вызова макроса ХLM.
Private Function GetValue(path, file, sheet, ref)
Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "Файл не найден"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
path - путь к закрытому файлу "c:\tmp"
file - название рабочей книги "vxl.xls"
sheet - название рабочего листа "Лист1"
ref - ссылка на ячейку "C4"
P.S. Хотя тут сейчас потестил - ExecuteExcel4Macro работает в макросе, но не получилось заставить работать в UDF...