Добрый день.
Помогите, пожалуйста, с оптимизацией процедуры, работает очень долго, если в таблице хотя бы 50 тыс. строк. Более 200 тыс. эксель может умереть.
Приложил файл-пример. На первом листе исходные данные, на втором обработанные.
1) Сначала я снимаю объединение ячеек строчкой Cells.UnMerge. Но в большом файле это занимает больше 15 минут. Как можно ускорить данную процедуру?
2) Далее делаю следующее:
Помогите, пожалуйста, с оптимизацией процедуры, работает очень долго, если в таблице хотя бы 50 тыс. строк. Более 200 тыс. эксель может умереть.
Приложил файл-пример. На первом листе исходные данные, на втором обработанные.
1) Сначала я снимаю объединение ячеек строчкой Cells.UnMerge. Но в большом файле это занимает больше 15 минут. Как можно ускорить данную процедуру?
2) Далее делаю следующее:
Код |
---|
Columns("A:A").Copy Columns("B:B").PasteSpecial Rows("4:4").AutoFilter Range("A6").FormulaR1C1 = "=R[-1]C" iLastRow = Cells(Rows.Count, 1).End(xlUp).Row Range("A4:I" & iLastRow).AutoFilter Field:=1, Operator:=xlFilterNoFill Range("A5:A" & iLastRow).FillDown ActiveSheet.ShowAllData Range("A5:A" & iLastRow).Copy Range("A5:A" & iLastRow).PasteSpecial xlPasteValues Range("A4:I" & iLastRow).AutoFilter Field:=1, Criteria1:=RGB(238, _ 246, 239), Operator:=xlFilterCellColor Range("A5:A" & iLastRow).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Delete ActiveSheet.ShowAllData |
Мне необходимо получить Контрагента с его договорами в одной строке, а не контрагент сверху от договора как в исходных данных.
Копирую первый столбец во второй, ставлю в ячейку с договором формулу получить значение из верхней ячейки, фильтром по цвету оставляю только договора (строки с контрагентом отличаются по цвету при выгрузке) и протягиваю формулу вниз. Вот это действие протягивание формулы также занимает огромное время, можно ли какую то альтернативу придумать данному действию, чтобы быстрей обработалась таблица? Возможно через массив.
3) После этого фильтром оставляю строки только "зеленые" с контрагентами и удаляю их, т.к. они лишние становятся. Также очень затратный по времени процесс. Как ускорить?
Буду рад любым мыслям. Спасибо.