Тормоза в EXCEL

Программирование на Visual Basic for Applications
vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Тормоза в EXCEL

Сообщение vrodo » 01.03.2005 (Вт) 10:41

Добрый день Господа!

Проблемма в следующем. В макросе крутится цикл который копирует данные с одного листа и вставляет в другой по определенному алгоритму. После 1500 строк начинаются дикие тормоза, скорость работы замедляется раз в 10 (1 строчка вставляется 1-2 секунды)
Причем, что самое интересное, алгоритм используется один и тотже, и через какое-то время копирование начинает идти быстрее но не на много
используется:
OFFICE SYSTEM 2003
Windows 2000
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.03.2005 (Вт) 12:06

Ну и чё сказать по поводу алгоритма, коего не видно? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 01.03.2005 (Вт) 12:48

Алгоритм очень большой
Смысл не в том
очень долго копирует и вставляет :(
не алгоритм а EXCEL
проверял в дебагере
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.03.2005 (Вт) 13:34

Значит на листе много данных и формул.
Отключай автоматический перерасчет, обновление экрана, скрывай Excel, после процедуры восстанавливай.
Lasciate ogni speranza, voi ch'entrate.

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 01.03.2005 (Вт) 13:47

Все это есть не первый год пишу
правда Excel не прячу а то пользователи будут пугаться
Я Сам удивляюсь
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.03.2005 (Вт) 14:42

Используется славная функция Find?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 01.03.2005 (Вт) 14:46

Йес ит из
и много
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.03.2005 (Вт) 14:49

Поиск заказываешь каждый раз небось с начала диапазона? :) И потому, когда счётчик уже на отметке 1500, экселю приходится перебирать все 1500, а не 10-20, как в начале? :)

Мож-таки отсортировать и юзать match с 1 или -1? Всё-таки бинарный поиск... хм... несколько быстрее :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 01.03.2005 (Вт) 15:12

поиск производится на различных листах
диапазон поиска уменьшать не получается ввиду различных причин
на 1 листе лежит структура
на другом подструктуры
на третьем данные
надо получить четвертый лист в котором эти данные надо переделав структуру и подструктуры ввести данные и сгруппировать их по наименованиям
весь макрос работает 10-12 минут
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.03.2005 (Вт) 15:55

Хм... Загрузить данные в массив (сортируя по ходу загрузки) и искать в отсортированном массиве?
Lasciate ogni speranza, voi ch'entrate.

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 01.03.2005 (Вт) 16:14

Еще 1 странную вещь обнаружил
ScreenUpdate опять сделал False
СТАЛО РАБОТАТЬ ЕЩЕ МЕДЛЕНЕЕ

:shock: :shock: :shock:
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

gacol
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.11.2004 (Вт) 13:13
Откуда: Нов. Уренгой

Сообщение gacol » 02.03.2005 (Ср) 12:42

Шейпов на листах нет?
Графика может тормозить по экспоненте при добавлении.

gacol
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.11.2004 (Вт) 13:13
Откуда: Нов. Уренгой

Сообщение gacol » 02.03.2005 (Ср) 12:42

Шейпов на листах нет?
Графика может тормозить по экспоненте при добавлении.

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 02.03.2005 (Ср) 13:06

Графика есть на листах с данными
И мне приходится специально создавать временные листы куда данные и структура копируются без графики
новая графика в процессе работы не создается
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

gacol
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.11.2004 (Вт) 13:13
Откуда: Нов. Уренгой

Сообщение gacol » 02.03.2005 (Ср) 15:19

Не знаю, может мой опыт как-то поможет.
У меня была задача, где рисовалось несколько сотен граф.объектов на лист.
Не говорю про само построения, но даже построенная книга открывалась несколько минут. Очень сильно ускорилось, когда выбрал масштаб листа 100%. Любое отклонение от ста замедляло работу на порядки.

abracadabra
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.11.2004 (Вт) 17:36
Откуда: Lviv Ukraine

Сообщение abracadabra » 02.03.2005 (Ср) 15:24

попробуй do events вставить
Крокодил, крокодю и буду крокодить!

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 02.03.2005 (Ср) 17:33

Попробуй по совету alibek'a зачнать в массив, а от туда в буфер, из буфер вроде быстрее вставляется

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 02.03.2005 (Ср) 18:25

еще раз убеждаюсь, что для того чтоб задать правильный вопрос надо знать половину ответа

все решилось 15 строчками кода
а именно
даже в случае отключенного расчета формул они все равно продолжают мешать работать
пришлось произвести рефакторинг и вынести установку всех формул ссылающихся на другие листы после отработки "основных циклов для создания боковика"
в результате имеем вместо 45 минут........................ !!!2 минуты!!!
Всем Спасибо огромное за то, что помогали в меру сил и за потраченное время
думаю этот опыт будет многим полезен
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

Терминатор
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 164
Зарегистрирован: 06.01.2005 (Чт) 12:57
Откуда: Москва

Сообщение Терминатор » 03.03.2005 (Чт) 19:11

А вот я не понял -

""пришлось произвести рефакторинг и вынести установку всех формул ссылающихся на другие листы после отработки "основных циклов для создания боковика" ""

Это что такое "рефакторинг"? и ещё произвести. И ещё создание "боковика". Кто такой боевик знаю, а кто такой "боковик" - не знаю. :shock:
Не, я серьёзно не понял. Ты уж действительно - поделись.
Hasta la vista, baby!

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 04.03.2005 (Пт) 15:20

Боковиком называют ........
Хмм проще на пальцах :)
есть таблица она состоит из

ЗАГОЛОВОК
--------------------------------------------------------------------------
Б |
О |
К |
О | Данные
В |
И |
К |

Надеюсь наглядно
Рефакторингом называют переработку кода с целью оптимизации

Надеюсь данная информация будет для Вас полезной
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList