Страницы: 1
RSS
ВПР, ДВССЫЛ, динамическая ссылка на закрытый файл (дубль 2)
 
Доброго времени суток, уважаемые форумчане!  
Во-первых хотел бы выразить увжание сдешним Гуру Excel'я. Подчерпнул для себя очень много интересного. Но зарегился только сейчас, т.к. задачу необходимо решить в сжатые сроки, но столкнулся с проблемой, которыую не могу решить. Так что прошу помощи!  
 
А задача следующая: из большого количества файлов единой структуры, расположенных в разных местах, необходимо подтянуть данные в один файл, т.е., по сути, задача консолидации. Но со своими нюансами, так что не все так просто. Делать это нужно будет на регулярной основе. Поэтому должна быть возможность задать каждому этапу вычисления путь на соответствующий исходный файл (откуда тянуть данные).  
 
Теперь к конкретике. Использовал следующую формулу:  
=ВПР(искомое_значение;ДВССЫЛ(АДРЕС(номер_строки;2;;;[адрес_файла])&":"&АДРЕС(номер_строки+55;9));4;0)
, где [адрес_файла] - ссылка на ячейку (текстового формата) с адресом необходимого файла. Формула работает, все нормально. НО, как известно, ДВССЫЛ не тянет данные из закрытых файлов, и, соответственно, чем дальше, тем больше файлов приходится открывать для корректного вычисления.
 
Много тем перечитал с подобными проблемами, однако подходящего решения не нашел. Находил подходящую надстройку с усовершенствованной функцией ДВССЫЛ, которая работает с закрытыми файлами, но нет возможности ипользовать надстройки (да и глючит она).  
 
В макросах не особо силен, написать свой аналог ДВССЫЛ не получается... Помогите пожалуйста!  
 
Надеюсь приложенные файлы помогут понять суть вопроса. Ячейки с интересующими формулами маркированы зеленым цветом в файле "Книга2".  
 
Заранее спасибо!  
С Уважением, Егор.  
 
P.S. Извиняюсь за дабл-постинг, прошу снести предыдущий топик. Надеюсь теперь оформление темы соответствует всем требованиям форума.
 
{quote}{login=Yogurt}{date=05.07.2011 02:06}{thema=ВПР, ДВССЫЛ, динамическая ссылка на закрытый файл (дубль 2)}{post}Доброго времени суток, уважаемые форумчане!  
Во-первых хотел бы выразить увжание сдешним Гуру Excel'я. Подчерпнул для себя очень много интересного. Но зарегился только сейчас, т.к. задачу необходимо решить в сжатые сроки, но столкнулся с проблемой, которыую не могу решить. Так что прошу помощи!  
 
А задача следующая: из большого количества файлов единой структуры, расположенных в разных местах, необходимо подтянуть данные в один файл, т.е., по сути, задача консолидации. Но со своими нюансами, так что не все так просто. Делать это нужно будет на регулярной основе. Поэтому должна быть возможность задать каждому этапу вычисления путь на соответствующий исходный файл (откуда тянуть данные).  
 
Теперь к конкретике. Использовал следующую формулу:  
=ВПР(искомое_значение;ДВССЫЛ(АДРЕС(номер_строки;2;;;[адрес_файла])&":"&АДРЕС(номер_строки+55;9));4;0)
, где [адрес_файла] - ссылка на ячейку (текстового формата) с адресом необходимого файла. Формула работает, все нормально. НО, как известно, ДВССЫЛ не тянет данные из закрытых файлов, и, соответственно, чем дальше, тем больше файлов приходится открывать для корректного вычисления.
 
Много тем перечитал с подобными проблемами, однако подходящего решения не нашел. Находил подходящую надстройку с усовершенствованной функцией ДВССЫЛ, которая работает с закрытыми файлами, но нет возможности ипользовать надстройки (да и глючит она).  
 
В макросах не особо силен, написать свой аналог ДВССЫЛ не получается... Помогите пожалуйста!  
 
Надеюсь приложенные файлы помогут понять суть вопроса. Ячейки с интересующими формулами маркированы зеленым цветом в файле "Книга2".  
 
Заранее спасибо!  
С Уважением, Егор.  
 
P.S. Извиняюсь за дабл-постинг, прошу снести предыдущий топик. Надеюсь теперь оформление темы соответствует всем требованиям форума.{/post}{/quote}обязательно формулами? Могу дать макрос. Просто диапазон задаете и все.  
 
Если таковой потребуется, вышлите образец файла
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Например, у Вас есть файл (исходный) по типу Книга1.xls из вашего примера (пустой). И в него необходимо просуммировать данные из файлов, аналогичной структуры. Подойдет?
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
кстати, вот тоже интересный вариант с макросами. Будет искать значения с помощью ВПРП (пользователься функция ВПР) в закрытой книге и выводить их файл.  
 
Как пользоваться:  
Сохраните архив на жесткий (обязательно).  
Откройте файл post_238223.xls, Alt+F11. В этой строке  
 
Private Const PAN$ = "C:\post_238731\Книга1.xls" укажите полный путь к таблице с данными.  
Private Const SHT$ = "БДР_Объекты" - можете не менять  
Private Const RNG$ = "A7:M60" - диапазон таблицы тоже  
 
После того, как сделаете все вышеизложенное, запустите макрос GetRange. Теперь диапазон вашей таблицы помещен в память. И с помощью пользовательской функции ВПР, Вы сможете доставать от туда любые необходимые вам значения. Инструкция по функции ВПРП также в модуле проекта.  
 
пример ВПРП: = ВПРП(Искомое значение,0,1) - та же строка, 1-ый столбец справа
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Спасибо большое за ответы! Пошел разбираться и тестить=) О результатах отпишусь.
 
Изаиняюсь за долгое отсутствие.  
К сожалению функция не работает, т.е., видимо, это я что-то делаю не так. Хотя, вроде бы, все понятно. Выдает ошибку #ЗНАЧ!  
Еще разок:  
1) В редакторе задаю постоянные, например:  
Private Const PAN$ = "C:\Users\Vorontsov\Desktop\post_238862\Книга1.xls"  
Private Const SHT$ = "БДР_Объекты"  
Private Const RNG$ = "D9:M34"  
 
2) Ввожу функцию ВПРП с задаваемыми аргументами (параметрами). Адрес файла, лист и диапазон, я так понял, функция цепляет из п.1, так?  
 
3) Запускаю макрос GetRange  
 
Если я правильно понял, то для корректной работы функции ВПРП необязательно запускать GetRange? Чувствую, что где-то упустил какой-нибудь нюанс, но где найти не могу...  
 
P.S. В выложенном Вами файле, если ничего не менять, кроме пути к Книга1.xls, тоже не работает. Макросы разрешал=)
 
Пример работает. Просто не обновились данные. Зайди в формулу и нажми ВВод у меня помогло.
 
Спасибо! Помогло!  
 
Как обычно, все оказалось просто=)
 
Формула заработала, потестил. Основной вопрос остался нерешенным=(  
Если "двумя словами", получается, нужен как раз ВПР с динамической ссылкой на файл и диапазон. Или ДВССЫЛ, который работает с закрытыми файлами. Проще, видимо, как раз второй вариант.
 
В модуле Книги (Эта книга), можете написать это  
 
Private Sub Workbook_Open()  
GetRange  
Application.CalculateFull  
End Sub  
 
тогда не придется запускать макрос вручную, он будет стартовать автоматически при открытии книги
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
Страницы: 1
Наверх