Добрый день, возникла идея уменьшить кол-во строк в таблице. (ежедневная выгрузка из базы данных - переделать выгрузку нет возможности)
Нашел простой макрос и чуточку доработал чтобы он искал только значения в одном столбце.
Но потребовалась еще 1 доработка.
если в D5 стоит ноль то строка удаляется.
Но мне необходимо еще одно условие прописать, чтобы D5 не удалялась т.к. в ячейке справа Е5 стоит значение больше нуля.
В принципе получается нужно удалять только те строки в которых значения D#+E#=0 (додумался пока писал пост)
Как прописать это условие в макрос? и можно ли его оптимизировать, ему приходится удалять примерно 1 700 строк из 15 000 и как я понял он их все в оперативку сначала собирает и когда соберет удаляет, Excel при этом зависает минут на 3-5.
Нашел простой макрос и чуточку доработал чтобы он искал только значения в одном столбце.
Но потребовалась еще 1 доработка.
если в D5 стоит ноль то строка удаляется.
Но мне необходимо еще одно условие прописать, чтобы D5 не удалялась т.к. в ячейке справа Е5 стоит значение больше нуля.
В принципе получается нужно удалять только те строки в которых значения D#+E#=0 (додумался пока писал пост)
Как прописать это условие в макрос? и можно ли его оптимизировать, ему приходится удалять примерно 1 700 строк из 15 000 и как я понял он их все в оперативку сначала собирает и когда соберет удаляет, Excel при этом зависает минут на 3-5.
Код |
---|
Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана ТекстДляПоиска = "0" ' удаляем строки с таким текстом ' перебираем все строки в используемом диапазоне листа For Each ra In Range("D2:D20").Cells ' если в строке найден искомый текст If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next ' если подходящие строки найдены - удаляем их If Not delra Is Nothing Then delra.EntireRow.Delete End Sub |