|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.11.2016, 18:33 | #1 |
Новичок
Джуниор
Регистрация: 19.06.2015
Сообщений: 2
|
Ищу лучше решения по экспорту и импорту данных
Уважаемые знатоки VBA. Подскажите пожалуйста в какую сторону лучше копать, чтобы решить следующую задачу:
Есть большая ОБЩАЯ таблица в экселе (500 столбцов и 5000 строк): 1. Нужно экспортировать определенные данные (скажем, столбцы с 1 по 10 и с 50 по 100, и строки с 300 по 1500) в отдельный файл (отдельную таблицу). 2. Далее этот отдельные файл заполняется пользователем и его нужно импортировать обратно в ОБЩУЮ таблицу. Т.е. нужно найти в ОБЩЕЙ таблицы нужные столбцы и строки для вставки. Я сделал это с помощью массивов и быстрой ставки, через .resize() = массив. Однако, макрос все равно очень долго работает. Может как-то приспособить dictionary для более быстрого поиска нужных строк и столбцов? Как бы вы решали эту задачу? Заранее спасибо за ответ. |
18.11.2016, 18:44 | #2 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
при использовании массивов, процесс импорта (как и экспорта) будет длиться не более 1 секунды
Если тормозит, - либо там дофига слишком формул (надо отключать пересчет формул на время обновления данных), либо вы с кодом перемудрили Цитата:
т.е. 2 вставки массива range("a50:j100").value = массив1 range("a300:j500").value = массив2 это выполняется моментально Цитата:
Вы же экспортировали это все из того же файла, - ну и запомните в том же файле диапазоны, откуда что было взято (например, что данные из исходного файла из диапазона a50:j100 вы вставили в редактируемый файл в диапазон b4:k54) Получится у вас одна или несколько таких записей А потом в цикле перебираете записи (получая адреса исходного и конечного диапазонов), и переносите данные обратно: Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 18.11.2016 в 18:55. |
||
18.11.2016, 20:10 | #3 |
Новичок
Джуниор
Регистрация: 19.06.2015
Сообщений: 2
|
Спасибо за ответ!
Проблема в том, что строки, которые нужно выгружать идут не по порядку. При этом за то время пока пользователь редактирует экспортированную таблицу, в ОБЩУЮ таблицу могут добавиться новые строки. Т.е. по любому нужно проводить сопоставление по строкам. Столбцы, можно считать, что не меняются. |
18.11.2016, 20:50 | #4 | |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Цитата:
Но если нужна не теория, то предоставьте свой код и тестовые файлы с подробным описанием
на неконкретные вопросы даю неконкретные ответы ...
|
|
18.11.2016, 21:30 | #5 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
как вариант - можете попробовать такое решение
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 |