Здравствуйте!
Есть макрос, с помощью которого очищаются данные по условию.
Например, есть таблица с шапкой из 7 столбцов.
С помощью макроса в столбце 5 фильтруются и очищаются строки со значением 1 и 2.
Исходные данные на листе 1. То что получается, представлено на листе 2.
Потом переходит на другой лист и т.д.
Все работает, но загвоздка в том, что файлы, где планируется это применять, очень громоздкие (около 100 мб), а сами таблицы, которые нужно фильтровать содержат сотни тысяч строк. И при применении макроса все подвисает на некоторое время. Можно ли как-то оптимизировать макрос для его быстродействия.
Я уже изменил функцию удаления строк на очистку содержимого (до этого файл вообще зависал и не реагировал), и убрал обновление экрана. Может есть еще способы или идеи?
Собственно файл и сам код:
Есть макрос, с помощью которого очищаются данные по условию.
Например, есть таблица с шапкой из 7 столбцов.
С помощью макроса в столбце 5 фильтруются и очищаются строки со значением 1 и 2.
Исходные данные на листе 1. То что получается, представлено на листе 2.
Потом переходит на другой лист и т.д.
Все работает, но загвоздка в том, что файлы, где планируется это применять, очень громоздкие (около 100 мб), а сами таблицы, которые нужно фильтровать содержат сотни тысяч строк. И при применении макроса все подвисает на некоторое время. Можно ли как-то оптимизировать макрос для его быстродействия.
Я уже изменил функцию удаления строк на очистку содержимого (до этого файл вообще зависал и не реагировал), и убрал обновление экрана. Может есть еще способы или идеи?
Собственно файл и сам код:
Код |
---|
Sub www() Application.ScreenUpdating = False With [b8].CurrentRegion .AutoFilter Field:=5, Criteria1:="1" .Offset(1).SpecialCells(12).EntireRow.ClearContents .AutoFilter Field:=5, Criteria1:="2" .Offset(1).SpecialCells(12).EntireRow.ClearContents End With ActiveSheet.AutoFilterMode = 0 Application.ScreenUpdating = True End Sub |