KSV, спасибо за разъяснения. Изучил материал, сделал все по подобию вашего кода. Даже нашел у вас небольшую ошибку ) Для поиска конечной строки вы указывали r = r - 40, если бы Текущая Активная была бы к примеру 1500 строкой, то в массив попало бы примерно еще столько же пустых строк. For i = 1 To Selection.Rows.Count же выделяет полностью нашу область (проверял через .select)
Скорость, конечно, стала немного быстрее, но все равно время обработки 2000 строк занимает примерно 35 секунд. Добавил .Sort .Columns(16) перед циклом - выиграл пару секунд. Весь файл приложить не могу, ограничение в 100кб, только 242 строчки влезло.
Можно что то еще из него "выжать"? ))
KSV, спасибо за разъяснения. Изучил материал, сделал все по подобию вашего кода. Даже нашел у вас небольшую ошибку ) Для поиска конечной строки вы указывали r = r - 40, если бы Текущая Активная была бы к примеру 1500 строкой, то в массив попало бы примерно еще столько же пустых строк. For i = 1 To Selection.Rows.Count же выделяет полностью нашу область (проверял через .select)
Скорость, конечно, стала немного быстрее, но все равно время обработки 2000 строк занимает примерно 35 секунд. Добавил .Sort .Columns(16) перед циклом - выиграл пару секунд. Весь файл приложить не могу, ограничение в 100кб, только 242 строчки влезло.
вы указывали r = r - 40, если бы Текущая Активная была бы к примеру 1500 строкой, то в массив попало бы примерно еще столько же пустых строк
А что заставило вас сделать активной ячейку в строке 1500, если учесть то, что в файле примере из сообщения 16, на которое я ссылался в предыдущем посте, последней заполненной строкой является строка 84? Но, даже если это и произойдет, то до строки r = r - 40 дело даже не дойдет, потому что двумя строками выше ошибку вызовет метод .Resize(r - n + 1, 9), т.к. номер переданной ему строки будет задан отрицательным числом (84 - 1500 + 1 = -1415).
вы указывали r = r - 40, если бы Текущая Активная была бы к примеру 1500 строкой, то в массив попало бы примерно еще столько же пустых строк
А что заставило вас сделать активной ячейку в строке 1500, если учесть то, что в файле примере из сообщения 16, на которое я ссылался в предыдущем посте, последней заполненной строкой является строка 84? Но, даже если это и произойдет, то до строки r = r - 40 дело даже не дойдет, потому что двумя строками выше ошибку вызовет метод .Resize(r - n + 1, 9), т.к. номер переданной ему строки будет задан отрицательным числом (84 - 1500 + 1 = -1415).