Тестер в Exel

  • Автор темы V8
  • Дата начала

V8

New member
Написал тестер системы в Exel
-использую минутки
-позу может держать и часами и минутами
-настраиваемых параметров один

Но он квартальные данные это где-то 35520 свечек гонял просчитывал макрос 4,5часа
Это если годовой брать то он убьёт неделю , да и хотел сводную таблицу для нескольких чисел настраиваемого параметра просмотреть просадки и выбрать оптимальную
Это нормально, такая скорость обработки макроса -?
В Exel для перебора свечек пользую следующий цикл:
DO WHILE I<35520 I=I+1 LOOP
Может есть более быстрый цикл -?
Кто-нибуть Exel для теста систем пользует -?
 

V8

New member
Вот надыбал инфу, блин а я впервые range применил, перепахать придется теперь на cells, можь быстрее будет:


Максимально убыстрить вывод данных в ексель можно
путем использования Cells и ни в коем случае не использовать Selection без сильной надобности.

Ну и еще одна фенечка именно в екселе.
Дело в том, что при каждой вставке в ячейку ексель делает пересчет и перерисовывает экран (даже если ексель не активен).
Чтобы это обойти, нужно
1. отключить автопересчет в момент вывода и запустить его в конце (если в отчете используются формулы).
2. Сделать перед запуском такую вещь Application.ScreenForUpdating=false, а после вывода вернуть на true. Вот эта фенечка реально помогает в увеличении скорости (заметил при запуске екселевских макросов, делающих какой либо вывод на листе).



Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo myErr
Application.EnableEvents = False ' отключение повторного вызова событий
Application.Calculation = xlManual 'отключение пересчета
Application.ScreenUpdating = False ' отключение обновления экрана
...
Application.EnableEvents = True
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
Exit Sub
myErr:
Application.EnableEvents = True
Application.Calculation = xlAutomatic
End Sub
 

V8

New member
Сегодня переделал на Сеll
и пересчет экрана отрубил

помогло , стал квартальный прогонять макрос за 12минут

но чото у меня в квике квиковский код из таблицы всех сделок юзает циклом по бумагам цепляет разнобокие параметры и в массивы раасфасовывет за секунды, а в табл всех зделок то не мало строк (но квик кривой токо день текущий знает это горбатый он и горбатым был и будет)

Ексель чото в этом что то перемудрен

Да и что то здесь никто не тестит в Экселе, а то сам нахожу операторы и пишу здеся

- ??
 

ASFedor

New member
В принципе, можно и отключить пересчет и прочая, как указано выше, а можно сократить объемы обращения к листу Эксель в принципе, т.е. взять данные с листа, провести все расчеты непосредственно в макросе, результаты вывести в Эксель. Правда, придется попотеть с макросом.
 

V8

New member
а еще можно данные выводить не в эксель, а в текстовый файл.
реально быстрее -?

онже 35000 обращений на запись файла сделает
разве запись строки в файл, как добавление оной,
будет бысрее чем выводи инфы в ячейки екселя -?

Я юзаю текстовик в том макросе который из таблицы всех сделок , но там он просто кидает лонг или шорт цену заявки число лотов , и всё
а так из табл всех сделок ексель делает минутки с расчетом макроматриц и графиков и тормозов не наблюдал, обновление раз в секунду
минуток-то в день меньше чем всех сделок, неужто он протормаживает так на выводе т.к. тестеру вывод в минутки идет

НО тестер у него входные 35000 строк - делает пересчет и выводит например позицию по деньгам тож каждые 35000строк
соответственно график времени и этих денег я вижу просадку от времени
 

V8

New member
В принципе, можно и отключить пересчет и прочая, как указано выше, а можно сократить объемы обращения к листу Эксель в принципе, т.е. взять данные с листа, провести все расчеты непосредственно в макросе, результаты вывести в Эксель. Правда, придется попотеть с макросом.
Я в книге нашел МАССИВЫ, например эти 35000 строк разом в массив занести, весь код сделать без вывода, вывод результата потом из массива в эксель да даже в текстовик быстрее

это верное направление для переделки, а то я уже начал можь зря - ?
 

ASFedor

New member
Я в книге нашел МАССИВЫ, например эти 35000 строк разом в массив занести, весь код сделать без вывода, вывод результата потом из массива в эксель да даже в текстовик быстрее

это верное направление для переделки, а то я уже начал можь зря - ?
Собсно, это как раз то, о чем я написал. Как это реализуется технически - без разницы. Главное - уменьшить работу макроса непосредственно с листом эксель, что существенно сократит время вывода результата.
 

V8

New member
Спасибо за ответы.

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

В книге VBA прочел, что нужно обходится без безусловных переходов, но блин не понимаю , виделебы они мои мнемокоды, я в автокаде набрасал ромбики-кавдратики-трапеции -- это как в школе, алгоритм карандашом на бумаге, чтобы самому не запутаться при переводе его в код.

Но у меня присутствуют переходы :

...
Go To dalshe1
....
....
dalshe1:
....
...


А кто-нибуть пользует у себя в коде такие переходы, или умудряется всё заменить на новомодные:
Select Case

Case is

End Case
с ухищерениями Wide Wend -?

Я ещё понимаю, что в екселе можно всё и в одну строку прописать на листе по формулам слево направо, а мышкой перетаскивая вниз это и будет i=i+1,
для простых стратегий типа пересеч.средних это просто,
а вот если у меня выход может быть зиг-заг то это я пробывал - голова распухла

или всё таки многие умудряются не пользовать Go To -?
 

ASFedor

New member
А кто-нибуть пользует у себя в коде такие переходы, или умудряется всё заменить на новомодные:
Select Case

Case is

End Case
А что тут сложного не могу понять?

Опять же, чтобы не загружать тело одной процедуры, можно вынести все в отдельные.

Хотя, тут что-то явно перебор, слишком большой код выходит, там условий то по идее должно быть тут вход, тут выход и все.

с ухищерениями Wide Wend -?
While Wend имелось ввиду?
Опять же в манулах все вроде бы написано, что не ясно конкретно?

для простых стратегий типа пересеч.средних это просто,
а вот если у меня выход может быть зиг-заг то это я пробывал - голова распухла

или всё таки многие умудряются не пользовать Go To -?
Программирование, даже на VBA, штука достаточно гибкая, простор для творчества безграничен ;)
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху