На малых объемах прекрасно работает решение. Спасибо за варианты, МатросНаЗебре.
НО, при использовании варианта 3 на списке из 900 строк и 813 ключей затраченное время составило 27 минут, что, конечно, совсем уже много.( обновление экрана было выключено)
Заменил внутренний цикл поиска по списку, операцией .FIND, время прогона того же объема уменьшилось до 9.5 минут, но хотелось бы еще быстрее.
Может подскажет кто варианты?
НО, при использовании варианта 3 на списке из 900 строк и 813 ключей затраченное время составило 27 минут, что, конечно, совсем уже много.( обновление экрана было выключено)
Заменил внутренний цикл поиска по списку, операцией .FIND, время прогона того же объема уменьшилось до 9.5 минут, но хотелось бы еще быстрее.
Может подскажет кто варианты?
Код |
---|
With activeworkbook.activesheet.ListObjects("Таблица24").ListColumns(2).DataBodyRange Set c = .Find(vKey, LookIn:=xlValues) If Not c Is Nothing Then firstResult = c.Address Do If vKey <> "" Then If Left(c, Len(vKey)) = vKey Then curLen = Len(c) - Len(vKey) arr(y, 2) = curLen arr(y, 1) = c y = y + 1 End If End If Set c = .Find(vKey, After:=c, LookIn:=xlValues) If c Is Nothing Then Exit Do Loop While c.Address <> firstResult End If End With |