У меня есть код, который сравнивает два списка на одном листе и удаляет всю строку из одного из двух списков, однако в настоящее время он работает очень медленно (по мере роста данных) и Я пытаюсь ускорить процесс.Пытается ускорить сравнение списка в EXCEL VBA
Я не преуспевая в этом какой-либо значительной степени, и я ищу некоторую помощь,
Спасибо!
Код:
Sub Clean_Up_Lists()
'run comparisons... clean up lists'
'turn of screen updating to speed up macro'
Application.ScreenUpdating = False
Dim iListCount As Long
Dim x As Range
Dim iCtr As Long
'get count of records to search through(list that will be deleted)'
iListCount = Sheets("Allocations").Cells(Rows.Count, "B").End(xlUp).Row
For Each x In Sheets("Allocations").Range("N200:N400" & Sheets("Allocations").Cells(Rows.Count, "B").End(xlUp).Row)
'loop through all records in the second list'
For iCtr = iListCount To 1 Step -1
If x.Value = Sheets("Allocations").Cells(iCtr, 2).Value Then
Sheets("Allocations").Cells(iCtr, 2).EntireRow.ClearContents
'if match exists --> clear contents from allocations list'
End If
Next iCtr
Next
Application.ScreenUpdating = True
End Sub
, что вы ожидаете эту часть '. "N200: N400" & Sheets ("Отчисления") Cells (Rows.Count" B "). Конец (xlUp). –
Прошло около 12 месяцев с момента внедрения этого кода, и я вспоминаю, что он должен был определить список значений, которые сравниваются для удаления. (по существу, зацикливание по основному списку) Перечитав его сейчас, интересно, есть ли избыточность при этом? – Guterres
Если последний использованный буксир, скажем, 500, эта строка '' N200: N400 '& Sheets («Выделения»). Ячейки (Rows.Count, «B»). End (xlUp) .Row' дает вам «N200» : N400500" '. Не уверен, что это то, что вам нужно –