Мне нужно просмотреть данные с несколькими тысячами строк и отредактировать определенные строки на основе значений нескольких полей (если они соответствуют некоторым критериям).Проблема эффективности с циклом Excel VBA
Проблема состоит в том, что для обработки циклов требуется около ста секунд (~ 13 секунд за цикл, иногда у меня есть 100 циклов) ... Я попытался также заставить VBA фильтровать таблицу, а затем работать с фильтрованными строками, но потребовалось то же самое время.
While l < CurrAloc And k <= lastrow
If Cells(k, g) = "Pass" And Cells(k, h) <> "" And Cells(k, i) = "" And Cells(k, j) = "Available" Then
Cells(k, ULDecCol) = CurrCustomer
Cells(k, ULFromClassifierCol) = CurrClassifier
add_to_log k
Sheets("Unit List").Select
l = l + 1
End If
k = k + 1
Wend
это весь ваш код? у вас есть 'Sheets (« Список модулей »). Выберите' внутри вашего цикла, который сканирует тысячи строк, как вы говорите, и я не уверен, что вы делаете с этим Select. 'Select' занимает много времени. –
~ 13 секунд много. Вы не должны сталкиваться с проблемами производительности с одним циклом. Может быть, у вас проблемы с вашим 'add_to_log'? Сколько времени потребуется, если вы не записываете этот журнал? Если вы используете выбор другого листа в вашем журнале: попробуйте записать на этот лист без выбора. – Jochen