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

Вход

Регистрация

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

 

= Мир MS Excel/Долго отрабатывает задачу макрос - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Долго отрабатывает задачу макрос (Макросы/Sub)
Долго отрабатывает задачу макрос
Anis625 Дата: Четверг, 15.10.2020, 23:27 | Сообщение № 1
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Добрый вечер, всем участникам форума.

Решил одну свою задачку и все вроде работает, информация собирается не в ручную несколько часов, а за минуту ... а зная как макросы быстро работают минута это долго =)
Есть хорошо работающий код. который удаляет строки если в 6-ом столбце дата меньше указанного в ячейке даты (на другом листе) только там где заполнены даты (добавил условие >0).
[vba]
Код
Sub mmm()
  Dim sh As Worksheet, i As Long
  Set sh = Sheets("из КСС (в периоде)")
  Set sh2 = Sheets("Отчет")
  For i = sh.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If sh.Cells(i, 6) < sh2.[N2] And sh.Cells(i, 6) > 0 Then sh.Cells(i, 6).EntireRow.Delete (xlShiftUp)
  Next i

End Sub
[/vba]
Таблицу из 100 строк (в продуктиве больше 8000) отрабатывает минуту. Что в этом коде может быть не так что он мучает таблицу целую минуту?, но делает как нужно
К сообщению приложен файл: 9507014.xlsb (17.0 Kb)


Сообщение отредактировал Anis625 - Четверг, 15.10.2020, 23:32
 
Ответить
СообщениеДобрый вечер, всем участникам форума.

Решил одну свою задачку и все вроде работает, информация собирается не в ручную несколько часов, а за минуту ... а зная как макросы быстро работают минута это долго =)
Есть хорошо работающий код. который удаляет строки если в 6-ом столбце дата меньше указанного в ячейке даты (на другом листе) только там где заполнены даты (добавил условие >0).
[vba]
Код
Sub mmm()
  Dim sh As Worksheet, i As Long
  Set sh = Sheets("из КСС (в периоде)")
  Set sh2 = Sheets("Отчет")
  For i = sh.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
    If sh.Cells(i, 6) < sh2.[N2] And sh.Cells(i, 6) > 0 Then sh.Cells(i, 6).EntireRow.Delete (xlShiftUp)
  Next i

End Sub
[/vba]
Таблицу из 100 строк (в продуктиве больше 8000) отрабатывает минуту. Что в этом коде может быть не так что он мучает таблицу целую минуту?, но делает как нужно

Автор - Anis625
Дата добавления - 15.10.2020 в 23:27
Anis625 Дата: Четверг, 15.10.2020, 23:34 | Сообщение № 2
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Может из за того что макрос каждый раз бегает на лист Отчет и смотрит там дату? Может правильно зафиксировать ее через Set в начале?
 
Ответить
СообщениеМожет из за того что макрос каждый раз бегает на лист Отчет и смотрит там дату? Может правильно зафиксировать ее через Set в начале?

Автор - Anis625
Дата добавления - 15.10.2020 в 23:34
and_evg Дата: Пятница, 16.10.2020, 07:02 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
Добрый...

Отключите обновление экрана в начале кода:
[vba]
Код
Application.ScreenUpdating = False
[/vba]
а в конце кода включите
[vba]
Код
Application.ScreenUpdating = True
[/vba]
 
Ответить
СообщениеДобрый...

Отключите обновление экрана в начале кода:
[vba]
Код
Application.ScreenUpdating = False
[/vba]
а в конце кода включите
[vba]
Код
Application.ScreenUpdating = True
[/vba]

Автор - and_evg
Дата добавления - 16.10.2020 в 07:02
Anis625 Дата: Пятница, 16.10.2020, 08:10 | Сообщение № 4
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
and_evg,
Пробовал, не помогает. Код в принципе долго отрабатывает всю процедуру
 
Ответить
Сообщениеand_evg,
Пробовал, не помогает. Код в принципе долго отрабатывает всю процедуру

Автор - Anis625
Дата добавления - 16.10.2020 в 08:10
and_evg Дата: Пятница, 16.10.2020, 08:46 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
Пробовал, не помогает

неправда!
В вашем случае обрабатывается за 2,79, а с отключением экрана за 0,23 !!!!!! (на моей машине)
К сообщению приложен файл: 7469081.xlsb (20.3 Kb)
 
Ответить
Сообщение
Пробовал, не помогает

неправда!
В вашем случае обрабатывается за 2,79, а с отключением экрана за 0,23 !!!!!! (на моей машине)

Автор - and_evg
Дата добавления - 16.10.2020 в 08:46
Pelena Дата: Пятница, 16.10.2020, 09:39 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Была у нас как-то тема по оптимизации кода макроса по скрытию строк, там даже есть сравнение разных вариантов по времени. Посмотрите, возможно что-то подойдёт, если заменить .Hidden = True на .Delete


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеБыла у нас как-то тема по оптимизации кода макроса по скрытию строк, там даже есть сравнение разных вариантов по времени. Посмотрите, возможно что-то подойдёт, если заменить .Hidden = True на .Delete

Автор - Pelena
Дата добавления - 16.10.2020 в 09:39
Anis625 Дата: Пятница, 16.10.2020, 10:05 | Сообщение № 7
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Pelena,
Попробую прикрутить в свою задачку. Спасибо Вам большое.

А .Delete без =True прописать?
 
Ответить
СообщениеPelena,
Попробую прикрутить в свою задачку. Спасибо Вам большое.

А .Delete без =True прописать?

Автор - Anis625
Дата добавления - 16.10.2020 в 10:05
Pelena Дата: Пятница, 16.10.2020, 10:38 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
без


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениебез

Автор - Pelena
Дата добавления - 16.10.2020 в 10:38
Anis625 Дата: Пятница, 16.10.2020, 10:39 | Сообщение № 9
Группа: Заблокированные
Ранг: Ветеран
Сообщений: 674
Репутация: 31 ±
Замечаний: 20% ±

Excel 2013
Pelena,
Не получилось разобраться в кодах =(
НО увидел полезную штуку откл/вкл пересчет формул в своем коде и все бодро отработало =) спасибо за наводку (не "На Водку" :D )
 
Ответить
СообщениеPelena,
Не получилось разобраться в кодах =(
НО увидел полезную штуку откл/вкл пересчет формул в своем коде и все бодро отработало =) спасибо за наводку (не "На Водку" :D )

Автор - Anis625
Дата добавления - 16.10.2020 в 10:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Долго отрабатывает задачу макрос (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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