0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
||||||
1 | ||||||
Поиск в книге, по названию листа другой. Excel19.03.2015, 05:27. Показов 7547. Ответов 19
Метки нет (Все метки)
Добрый день, столкнулся с такой проблемой, не знаю как осуществить поиск по названию листа, объясню:
Есть книга "Сводный", в ней 70 ЛИСТОВ, в каждом листе по 31 строки. В этой же папке находится 31 книга (названы по порядку) соответственно в каждой из них по 70 СТРОК, и мне необходимо, чтобы: 1) Книга "1" открылась 2) Книга "Сводный" копировал название листа 3) Книга "1" ищет строку, копирует 4) Книга "Сводный" ищет строку "1" (соответвенно по названию книги), вставляет 5) Переход на следующий лист 6) Действия 2,3,4 повторяется пока не закончится листы 7) Книга "2" открылась 8) И снова тот же цикл То есть обычным копированием массива тут не обойдешься, потому что нужно постоянно перепрыгивать с листа на лист, я написал то, что у меня получилось сделать, а именно цикл открытия книг по номеру, осталось понять как копировать данные используя поиск строки по названию листа.
0
|
19.03.2015, 05:27 | |
Ответы с готовыми решениями:
19
Как организовать поиск в другой книге или в этой же книге, поиск по слову на определенных листах При создании нового листа произвести проверку на существование вводимого имени листа в текущей книге EXCEL Поиск по названию листа Сохранение конкретного листа файла в другой книге |
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
|
19.03.2015, 08:36 | 2 |
Выложите файл пример. Я не очень понял, что именно нужно копировать.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
19.03.2015, 10:31 [ТС] | 3 |
Оу, это проблемно, сижу через яблокофон...
Попробую объяснить еще шире: Книга "Сводный" в ней 70 листов с названием машин вида А 111 АА 11 (значения условны) В каждом листе в столбце А номер дня по порядку от 1 до 31 В этой же папке тридцать одна книга, соответственно по дням месяца, открывая книгу в ней списком эти 70 машин с масивом данных на одном листе. Тоесть задача программы собрать данные из 31 книги, рассортировать их по листам, чтобы выбрав вкладку машины, можно было видить результат за каждый день.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
19.03.2015, 11:10 | 4 |
Схематично так - открываем в цикле каждую книгу (1 раз), собираем данные в словарь или массив.
Затем открываем сводный файл и всё собранное раскладываем по местам. Или другой вариант - все данные тянем формулами, т.к. заранее известны все координаты данных - имя файла, имя листа, диапазон. Эти формулы можно прописать макросом, затем заменить на вытянутые значения. Если видеть файлы - возможно эти подходы не годятся, но есть похожие задачи, которые решались именно так.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
19.03.2015, 11:31 [ТС] | 5 |
В том то и дело, что формулами не получится, потому что машины могут добавлятся, удаляться, плюс эти отчеты формируются в хаотичном порядке, поэтому нужен именно поиск строки.
Подскажите хотябы какой командой можно поместить в буфер обмена название листа, и какой командой можно осуществить поиск значения из буфера обмена. Суть кода ведь в том чтобы оптимизировать, конечно если для каждого листа написать код , с уже фиксированными значениями , было бы не эффективно, но более легче, но если добавлять машины нужно и код редактировать, а пользователи женщины от 40 плохо владеющие ПК
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
||||||
19.03.2015, 11:41 | 6 | |||||
Создал у себя 31 копию книги как вы описали. У меня макрос работает.
Если выложите примеры, то вечером проверю.
0
|
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
|
|
19.03.2015, 11:43 | 7 |
Думаю без примера файлов дела не будет.
А буфер обмена конечно можно обрабатывать, но это не нужно, и излишне сложно для этой задачи.
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
||||||
19.03.2015, 12:00 | 8 | |||||
Немного переделал. На случай, если в файлах меньше 70 строк.
Microsoft ActiveX Data Objects 2,8 Library Вот эту библиотеку подключал.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
19.03.2015, 14:10 [ТС] | 9 |
Значения условны, для наглядности, в моём случае машин 70, данных гораздо больше, документ "1" можно раскопировать и переименовать, структура листа одинаковая, разница лишь в данных и порядке.
Гос. номер и название листов в Сводной книге одинаковые. Каждый день приходит файл Excel со списком ВСЕХ машин, бедная 40 летняя женщина открывает Книгу "Сводный" и каждый день в ручную копирует информацию для каждой машины, это всё крайне медленно а начальству удобно смотреть прогресс по каждой машине отдельно. Я ей решил помочь и две таблицы упростил в 1 кнопку, а вот эту задачу не понимаю как сделать. Точнее сделать то можно, написать для каждой машины свой алгоритм, но это крайне неэффективно, вы же понимаете
0
|
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
19.03.2015, 14:54 | 10 | |||||
Другой вариант, макрос в книгу Сводный.
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
||||||
19.03.2015, 23:38 | 11 | |||||
Сообщение было отмечено Krool как решение
Решение
Переделал под структуру из примера.
Работает без открытия книг.
1
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
20.03.2015, 08:56 [ТС] | 12 |
Казанский, спасибо, ваш вариант более менее справляется, еще до работать, подскажите а как чтобы он выделил всю строку, а не пару ячеек для копирования?
Vovchikvsb подключил библиотеку, на цикле if err=0 then пропускает , я правильно понимаю что код в инет просится? Или меня просто сбили с толку слова конект и провайдер?
0
|
Модератор
|
|||||||||||||||||||||||||||||||||||||
20.03.2015, 10:56 | 13 | ||||||||||||||||||||||||||||||||||||
циклом по книгам сформировать текстовик(для скорости)
открыть текстовик екселем далее обычные фильтры и сводные
0
|
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
20.03.2015, 10:58 | 14 |
Сейчас копируются 4 ячейки справа от найденного гос. номера: 13 строка
c.Offset(, 1).Resize(, 4).Copy ... Всю строку копировать не получится, т.к. по условию первые два столбца в файлах разные.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
20.03.2015, 11:54 [ТС] | 15 |
Vovchikvsb, огромное человеческое спасибо!!! Немного разобрался в вашем коде, нашел пару моментов почему выдавало ошибку, всё дело в типе данных, и некоторых внутренних оссобенностей таблицы, подкорректировал и всё работает именно так как должно! Спасибо!
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
|
20.03.2015, 20:09 | 16 |
Не за что.
Не в инет. Это подключение к файлу. Просто я подумал, что лучше не открывать книги, а подключиться к ним.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
20.03.2015, 20:25 [ТС] | 17 |
Vovchikvsb, подскажи, а как изменить эту строку чтобы он именно открывал, у меня проблема что он не копирует данные если они не открыты, как только добавил строку открытия он работает как надо. С теми простыми примерами хорошо работает без открытия, но в моем варианте почему то сбой.
И подскажи где можно изучить работу с этой библиотекой? Книжку , самоучитель
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
|
20.03.2015, 21:17 | 18 |
Если нужно открыть книгу в эксель, то это код Казанский.
Выложите один файл именно вашего варианта. Возможно нужно изменить настройки подключения. Сейчас поищу что-нибудь подходящее. Сам в поисковике искал.
0
|
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 16
|
|
20.03.2015, 21:30 [ТС] | 19 |
Да впринципе код чутка добавил и всё нормально, просто хочу понять как 6 строка работает, какие атрибуты за что отвечают
0
|
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
|
|
20.03.2015, 21:50 | 20 |
На форуме не нашел литературы на эту тему, а сторонние ссылки вроде запрещены((
0
|
20.03.2015, 21:50 | |
20.03.2015, 21:50 | |
Помогаю со студенческими работами здесь
20
Создание листа в рабочей книге Excel Очистить содержимое определённого листа в книге Excel Работа с Excel. Создание листа в книге по шаблону Как узнать Item листа в книге Excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |