![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 19.06.2015
Сообщений: 2
|
![]()
Уважаемые знатоки VBA. Подскажите пожалуйста в какую сторону лучше копать, чтобы решить следующую задачу:
Есть большая ОБЩАЯ таблица в экселе (500 столбцов и 5000 строк): 1. Нужно экспортировать определенные данные (скажем, столбцы с 1 по 10 и с 50 по 100, и строки с 300 по 1500) в отдельный файл (отдельную таблицу). 2. Далее этот отдельные файл заполняется пользователем и его нужно импортировать обратно в ОБЩУЮ таблицу. Т.е. нужно найти в ОБЩЕЙ таблицы нужные столбцы и строки для вставки. Я сделал это с помощью массивов и быстрой ставки, через .resize() = массив. Однако, макрос все равно очень долго работает. Может как-то приспособить dictionary для более быстрого поиска нужных строк и столбцов? Как бы вы решали эту задачу? Заранее спасибо за ответ. |
![]() |
![]() |
![]() |
#2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
при использовании массивов, процесс импорта (как и экспорта) будет длиться не более 1 секунды
Если тормозит, - либо там дофига слишком формул (надо отключать пересчет формул на время обновления данных), либо вы с кодом перемудрили Цитата:
т.е. 2 вставки массива range("a50:j100").value = массив1 range("a300:j500").value = массив2 это выполняется моментально Цитата:
Вы же экспортировали это все из того же файла, - ну и запомните в том же файле диапазоны, откуда что было взято (например, что данные из исходного файла из диапазона a50:j100 вы вставили в редактируемый файл в диапазон b4:k54) Получится у вас одна или несколько таких записей А потом в цикле перебираете записи (получая адреса исходного и конечного диапазонов), и переносите данные обратно: Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 18.11.2016 в 18:55. |
||
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 19.06.2015
Сообщений: 2
|
![]()
Спасибо за ответ!
Проблема в том, что строки, которые нужно выгружать идут не по порядку. При этом за то время пока пользователь редактирует экспортированную таблицу, в ОБЩУЮ таблицу могут добавиться новые строки. Т.е. по любому нужно проводить сопоставление по строкам. Столбцы, можно считать, что не меняются. |
![]() |
![]() |
![]() |
#4 | |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
![]() Цитата:
![]() Но если нужна не теория, то предоставьте свой код и тестовые файлы с подробным описанием
на неконкретные вопросы даю неконкретные ответы ...
|
|
![]() |
![]() |
![]() |
#5 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
как вариант - можете попробовать такое решение
http://excelvba.ru/programmes/Lookup надстройка сравнит данные по одинаковому столбцу (например, сравниваем столбец 1 со столбцом 1), и скопирует данные в совпавшие строки (в настройках указываем столбцы для копирования: 1-10, 50-100) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ищу совета, а лучше помощи (Excel) | Rodion_2015 | Помощь студентам | 0 | 20.09.2015 14:52 |
Ищу помощника по ведению сайта для решения мелких задач (HTML, PHP, JavaScript) | Nastasia_ya | Фриланс | 2 | 04.02.2014 00:37 |
Таймер. Конвертирование ms в часы,минуты, секунды.. ищу решения.. | Человек_Борща | Общие вопросы Delphi | 3 | 08.04.2010 09:51 |
как лучше организовать базу данных | ilin-alex | Помощь студентам | 3 | 31.03.2010 12:51 |