![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
![]()
Добрый день, уважаемые знатоки!
К сожалению созданные мною ранее темы остались без решения, поэтому решился создать новую, более упрощенную задачу. Подскажите, пожалуйста код, или натолкните на подобный макрос. Суть макроса: в ячейках D3:I6 файла ИТОГ собираются данные из книг 1-3. Т.е. 1) макрос открывает книгу в соответсвии с именем в столбце А, 2) переходит на лист этой книги в соответствии с именем в столбце В, 3) находит строку по условию в соответсвии со столбцом C и копирует диапазон D:I этой строчки в файл ИТОГ. Скажите возможно ли это реализовать или не стоит и пытаться найти ответ? Заранее буду очень признателен! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
![]()
Пример прилагаю.
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Реализовать возможно, и даже довольно просто.
Это я пишу не потому, что берусь делать, а чтоб Вы не отчаивались ![]() Конкретно мне делать не хочется... P.S. Вообще-то чуть подумав, вижу, что чтоб сделать хорошо и быстро - нужно чуть подумать... Это так, каламбур - если серьёзно, то чтоб сделать хорошо и быстро (а ведь проблема именно в скорости - "медленное" решение на ВПР() уже есть) - нужно хорошо подумать ![]()
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 29.08.2012 в 14:25. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
![]()
Спасибо, за ответ. Буду ждать того кто возьмется...
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Вообще-то задача выглядит интересной. Я даже затрудняюсь... пока не вижу в деталях алгоритма...
![]()
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]()
пробуйте... главное чтобы все файлы находились в одной папке!
Добавлено позже: хотя можно еще добавить пару строк: Код:
Единственный способ стать умнее, играть с более умным противником...
Последний раз редактировалось staniiislav; 31.08.2012 в 15:15. |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
staniiislav,
в вашем макросе есть один заметный минус: если в таблице будет по 1000 значений для каждой из трёх книг в папке, то 3000 операций открытия и закрытия будут явным перебором. Корректнее будет открыть все книги, а потом уже в цикле заполнять ячейки значениями, после чего закрыть книги... при больших объёмах прибавка будет заметной...
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]() Цитата:
Единственный способ стать умнее, играть с более умным противником...
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 17.03.2009
Сообщений: 226
|
![]()
Спасибо большое. Буду тестировать...
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Я вот тоже эту проблему начал решать здесь ещё в другой теме ( http://www.programmersforum.ru/showthread.php?t=210047 - там правда пример чуть посложнее, к этому код не подойдёт без переделки) - сделал макросом на ВПР() (по полным столбцам) - говорят что долго.
Казанский на sql.ru сделал в принципе аналогично на ИНДЕКС(ПОИСКПОЗ)) (но уже на ограниченном диапазоне) - вроде заметно быстрее, но думаю всё равно не устраивает. На Планете я озвучил такой возможный алгоритм - нужен словарь/коллекция/массив из имён файлов, где каждому имени принадлежит словарь/коллекция/массив нужных его листов, где каждому листу принадлежит словарь/коллекция/массив позиций и критериев. Далее перебором по цепочке делаем дело. Вот ктоб реализовал - а мы бы посмотрели ![]() P.S. вариант с открытием/закрытием файлов на каждую строку тоже уже был на Планете, правда не такой красивый, но тоже через find ![]() P.P.S. Станислав, а зачем там словарь? ![]()
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 31.08.2012 в 16:37. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как скопировать лист в новую книгу | m-1 | Microsoft Office Excel | 4 | 17.03.2011 18:26 |
VBA- как в коде перейти на другой лист | Nasten'ka7 | Microsoft Office Excel | 11 | 01.02.2011 19:38 |
Копировать строку фильтрованного списка в другую книгу, на последнюю пустую строку | Gvaridos | Microsoft Office Excel | 11 | 24.11.2010 00:48 |
найти и скопировать на другой лист нужные ячейки | abcde | Microsoft Office Excel | 4 | 23.02.2010 07:46 |
Как скопировать выпадающий список на другой лист и в другую книгу | gleod | Microsoft Office Excel | 4 | 07.07.2009 22:36 |