sokol92, такое впечатление, что вы вообще не вникали в то, что я писал выше и в результаты выложенного примера тоже.
Цитата |
---|
sokol92 написал: Общее замечание - следует минимизировать число взаимодействий между VBA и Excel |
Я знаю, как оптимизировать обработку данных, сводя к минимуму взаимодействие с ячейками напрямую (обработать таблицу с миллионом строк и парой сотен столбцов за секунды – не проблема). Но как вы сформируете любую итоговую таблицу с нужный форматом КАЖДОЙ отдельной ячейки в ней, не взаимодействуя с Excel?
Цитата |
---|
sokol92 написал: 100 раз копируют информацию ... Копирование диапазона ячеек во много раз быстрее |
100 – это как раз приблизительное число ячеек итогов в конкретной задаче, которые необходимо отформатировать в соответствии с данными и форматами ячеек на других листах. Думаете, я с диапазонами работать не умею?)
Цитата |
---|
sokol92 написал: Методы 2-3 100 раз копируют информацию в буфер обмена и вставляют информацию из буфера обмена. В эффективных программах необходимо минимизировать количество таких операций. |
Вы не заметили, что результаты теста противоречат вашим рекомендациям (и моим ожиданиям, кстати, тоже)? Внезапно через буфер обмена получается раз в 10 быстрее))
Короче, вопрос остается: в чем прикол? Почему на практически одинаковых машинах с плюс-минус одинаковыми процессорами, одинаковым объемом оперативы и соседними версиями Excel время выполнения операции копирования ячеек может отличаться в десятки раз? И как это можно обойти?
Пока что нашлось одно странное решение: вопреки интуиции, здравому смыслу и рекомендациям
sokol92, копировать через copy-pastespecial (на одних машинах получается быстрее раза в два, на других – в десять).
Может быть все-таки есть другие способы?