Доброго времени суток, люди добрые!
Может, кто-то подскажет, как лучше решить такую маленькую проблемку.
Есть книга, в которую вставляются отдельные данные из других открываемых книг посредством нехитрого цикла прямого копирование (ниже).
Однако со временем этих циклов стало очень много, а код стал исполняться несколько десятков минут (циклов таких - многие сотни).
Появилась мысль о замене цикла прямого копирования на работу с массивами, т.е. сначала данные в массив считать, а потом разом вставить в нужное место.
НО не могу оценить, стоит ли игра свеч, ускорит ли это копирование данных (дабы впустую не переписывать тысячи строк макросов). Отсюда вопрос - имеет ли смысл переходить на работы в циклах с массивами? Имеет ли это хотя бы в теории выигрыш по времени не менее -30%? И если да, то как можно наилучшим способом трансформировать мой пример, чтобы он в теории стал работать быстрее?
Заранее премного благодарен!
Может, кто-то подскажет, как лучше решить такую маленькую проблемку.
Есть книга, в которую вставляются отдельные данные из других открываемых книг посредством нехитрого цикла прямого копирование (ниже).
Однако со временем этих циклов стало очень много, а код стал исполняться несколько десятков минут (циклов таких - многие сотни).
Появилась мысль о замене цикла прямого копирования на работу с массивами, т.е. сначала данные в массив считать, а потом разом вставить в нужное место.
НО не могу оценить, стоит ли игра свеч, ускорит ли это копирование данных (дабы впустую не переписывать тысячи строк макросов). Отсюда вопрос - имеет ли смысл переходить на работы в циклах с массивами? Имеет ли это хотя бы в теории выигрыш по времени не менее -30%? И если да, то как можно наилучшим способом трансформировать мой пример, чтобы он в теории стал работать быстрее?
Заранее премного благодарен!
Код |
---|
For j = 1 To 13 For i = 7 To 36 rowPL = ThisWorkbook.Worksheets("Лист").Cells(i, 2).Value With mySheetsPL(j) ThisWorkbook.Worksheets("Лист").Cells(i, j + 5).Value = .Cells(rowPL, dCol).Value 'видимо, именно эта строка занимает наибольшее время, т.к. копируется значение каждой ячейки отдельно и последовательно End With Next i Next j |