|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.03.2013, 02:42 | #1 |
Регистрация: 15.03.2013
Сообщений: 3
|
(excel_2010_VBA)Поиск и замена ячеек по условиям ячейками из другого файла.
Добрый день, прошу помочь в написании макроса:
Есть два длинных файла Файл1 и Файл2 (txt) примерно 600000 строк, открывать, добавлять и сохранять с помощью VBA я их научился, но вот обновить Файл1 файлом Файл2. Задача: найти в столбце Файл2 ячейку такого вида: A_name=* ,где *-соответственно произвольное количество символов найти её в Файл1 столбце спуститься на +1 ячейку вниз и если она №ячейки+1(Файл1) "не полностью совпадает" с №ячейки+1(Файл2), тогда +9 ячеек от №ячейки+1(Файл1) и замена следующих 6 ячеек подряд из Файл2 от №ячейки+1(Файл2) +9ячеек, иначе замена 15 ячеек подряд вниз №ячейки+1(Файл1) взятых из Файл2 от №ячейки+1(Файл2). Так пройтись по всему столбцу Файл2. Т.е. два файла представляют собой "блоки" с именами "A_name=*" идущие друг за другом с одинаковым количеством строк, но порядок их(блоков) в файле бывает произвольный. Заранее спасибо откликнувшимся! |
15.03.2013, 04:15 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
Сделать-то вроде несложно, но... 600 тыс строк - это очень много
Столько сравнений, поиска, и т.д. — займут ОЧЕНЬ много времени. Я бы посоветовал читать файл (точнее, оба файла одновременно) построчно, формируя 2 массива по 40 тыс. блоков потом на основе этих 2 массивов создать ещё 2 массива размерами 40000 строк * 2 столбца, куда поместить A_name=* и значения ячейки снизу после чего искать совпадения в 2 этих маленьких массивах 40000*2, и когда совпадение найдено, менять данные в «большом» массиве 40000*1 Когда все замены произведены, склеиваем обработанный массив из 40000 блоков в одну текстовую строку (функцией join), и записываете получившуюся текстовую строку в файл. Это позволит заметно ускорить процесс сравнения и поиска, и сократит время обработки данных до 20-200 секунд |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск и замена файла | Shur1k_ua | Фриланс | 1 | 30.05.2012 00:21 |
Массовый поиски и замена по шаблону из другого файла. | wadimko97 | Microsoft Office Excel | 1 | 27.10.2011 13:51 |
Чтение ячеек из другого .xls файла в переменные | MasterYod@ | Microsoft Office Excel | 2 | 12.05.2010 11:32 |
Поиск ячеек в книге, совпадающих с ячейками в столбце А, листа1 данной книги | TiG | Microsoft Office Excel | 1 | 10.12.2009 19:32 |
Подсчёт ячеек по условиям | Feniks18 | Microsoft Office Excel | 2 | 16.07.2009 16:26 |