Страницы: 1
RSS
Как лучше оптимизировать метод поиска в массиве данных.
 
Здравствуйте. Выкладываю файл. Нужны советы по оптимизации скорости работы макроса. У меня есть подозрение что алгоритм написан неверно что плохо сказывается на скорости работы.
Основная претензия к этому участку кода
Код
For i = LBound(f) To UBound(f)
    For j = 1 To rr
        x = InStr(x + 1, f(i), "/")
        
    Next j
    If x <> 0 Then
    f(i) = Mid(f(i), 1, x - 1)
    End If
    x = 0
    
    If k = f(i) Then
    n = n + 1
    ReDim Preserve arr(n)
    arr(n) = tb.Cells(i, 13 + rr)

    End If
Next i
 
А какую функцию, по вашему мнению, выполняет вот эта строчка?
Код
f() = Application.Transpose(Range("списки_пульта").Resize(h, 1))
 
Эта строчка считывает столбец 1 в диапазоне списки пульта в одномерный массив f(). Причем Application.Transpose превращает индекс массива из 2 х аргументов в один.
 
Цитата
Sla_0412 написал: Основная претензия к этому участку кода
С чего бы?
Что бы что то оптимизировать нужно знать задачу. Что должен выполнять Ваш код?
А по этому куску кода можно только сказать, что он на писан без грамматических(синтаксических) ошибок
Цитата
Sla_0412 написал: Нужны советы по оптимизации скорости работы макроса.
Циклы быстрее чем Application.Transpose
Согласие есть продукт при полном непротивлении сторон
 
Я просто опасаюсь, что при загрузке хотя бы сотни строк  будет большое время ожидания .  В целом код работает как и ожидалось. Но при пошаговой прокрутке очень много повторов. Плюс на форум я не стал грузить картинки находящиеся в таблице в поле стобца 2. "списки пульта" . Может из-за них тормозит..не знаю
Страницы: 1
Наверх