Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление строки по заданному правилу - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки по заданному правилу (Макросы/Sub)
Удаление строки по заданному правилу
Wasilich Дата: Среда, 11.11.2015, 12:08 | Сообщение № 21
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Протестируйте, может на пару минут быстрее будет. :)
[vba]
Код
Sub qqq()
    Dim r1&, r2&, i&, n_&
    Application.ScreenUpdating = False
    cal_ = Application.Calculation
    Application.Calculation = xlCalculationManual
    r1 = Range("H" & Rows.Count).End(xlUp).Row
    r2 = Sheets("Лист2").Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To r1
        If i Mod 100 = 0 Then DoEvents
        On Error Resume Next
        n_ = WorksheetFunction.Match(Range("H" & i), Sheets("Лист2").Range("A1:A" & r2), 0)
        If n_ = 1 Then Range("H" & i).ClearContents
        n_ = 0
        On Error GoTo 0
    Next
    On Error Resume Next
    ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete
    Application.Calculation = cal_
    Application.ScreenUpdating = True
End Sub
[/vba]
 
Ответить
СообщениеПротестируйте, может на пару минут быстрее будет. :)
[vba]
Код
Sub qqq()
    Dim r1&, r2&, i&, n_&
    Application.ScreenUpdating = False
    cal_ = Application.Calculation
    Application.Calculation = xlCalculationManual
    r1 = Range("H" & Rows.Count).End(xlUp).Row
    r2 = Sheets("Лист2").Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To r1
        If i Mod 100 = 0 Then DoEvents
        On Error Resume Next
        n_ = WorksheetFunction.Match(Range("H" & i), Sheets("Лист2").Range("A1:A" & r2), 0)
        If n_ = 1 Then Range("H" & i).ClearContents
        n_ = 0
        On Error GoTo 0
    Next
    On Error Resume Next
    ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete
    Application.Calculation = cal_
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 11.11.2015 в 12:08
SLAVICK Дата: Среда, 11.11.2015, 12:50 | Сообщение № 22
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Как можно увеличить скорость данной процедуры?

макрос на 100 000 отработал меньше чем за минуту:


Макрос Ярослава пробовали применить? Что не устроило?

Мне тоже интересно %)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Как можно увеличить скорость данной процедуры?

макрос на 100 000 отработал меньше чем за минуту:


Макрос Ярослава пробовали применить? Что не устроило?

Мне тоже интересно %)

Автор - SLAVICK
Дата добавления - 11.11.2015 в 12:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строки по заданному правилу (Макросы/Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!