МГС  Московская Гигабитная Сеть
 www.umos.su info@umos.su  Выделенные линии Ве/б-Студия Хостинг Collocation
 Тарифы Вопросы и ответы Полезная информация Контакты

Софт >> Excel

Страниц в ветке: 1
Kobra007
Змей007
***

Зарегистрирован: 09/06/2003
Сообщений: 1727
Как увеличить скорость работы экселя?
      #344686 - 06/09/2011 23:33

Подключил 54 валютные пары в cvs формате ну и немного написал всякого разного чтобы считало, ни какого собственного программного кода, только собственные экселевские средства. Каждый день надо обновить данные, заколебало ждать по полчаса пока все обновит и пересчитает. Даже после одновления, чтобы что-то ввести, думает по полминуты, пока введет и посчитает. Короче заколебало, а что делать ума не приложу. Можно ли как-то ускорить процесс? Стоит 2007.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Andrewso
Верю, СССР
будет восстановлен
***

Зарегистрирован: 31/07/2006
Сообщений: 1624
Re: Как увеличить скорость работы экселя? [re: Kobra007]
      #344777 - 07/09/2011 05:32

Не знаю как реализовано обновление. )
Но могу предположить - Excel пересчитывает формулы с каждым поступившим обновлением данных, квантованно как-то, что ли.
Это сильно тормозит. У меня на время обновления из текстовиков (макросом) макрос выключаеет автоматический пересчёт в книге, а затем включает вновь. Пересчитывается только конечный результат с полностью обновлёнными данными.
Делается это примерно так:

Sub test()
'выключаем автоматический пересчёт в книге
Application.Calculation = xlManual

'тело макроса импорта и предварительной обработки данных

'включаем автоматический пересчёт в книге
Application.Calculation = xlAutomatic

End Sub

.. я выкладывал образец базы на Excel, можно поковыряться.
#321516 - 30/12/2010 12:19


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Andrewso
Верю, СССР
будет восстановлен
***

Зарегистрирован: 31/07/2006
Сообщений: 1624
Re: Как увеличить скорость работы экселя? [re: Andrewso]
      #344778 - 07/09/2011 05:40

.. ещё и котировки по DDE принимает в моменте, небось? Или MT включать после обновления из текстовиков, или формулы-ссылки на MT в ячейках стирать, а потом макросом восстанавливать.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Kobra007
Змей007
***

Зарегистрирован: 09/06/2003
Сообщений: 1727
Re: Как увеличить скорость работы экселя? [re: Andrewso]
      #344857 - 07/09/2011 18:55

Не, котировки по DDE я в этот момент отключаю, а то бы вообще загнулся комп. И так при приеме котироваок практически не фига больше не могу делать. С импортом действительно, включена функция обновления формул. Дело в том, что если ее отключать, то при добавлении новой строки в нее не копируются формулы, которые рядом с данными и потом все это надо делать все вручную т.е. скопировать формулы в новую строку. Наверное все таки вы правы, и в этом случае надо попробовать написать макрос, который запускать после импорта, а саму опцию отключить, а то ну ее нафиг с такой производительностью.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
andy
Свой человек


Зарегистрирован: 24/06/2006
Сообщений: 64
Re: Как увеличить скорость работы экселя? [re: Kobra007]
      #345236 - 10/09/2011 19:15

На мой взгляд, вообще нужно (если это возможно в принципе) сначала получить данные в Excel, а потом их обрабатывать. И, на мой взгляд, лучше все-таки ср-ми VBA.
ЗЫ Полчаса ждать - не срок, а на вопрос "что делать ума не приложу" на мой взгляд хорошее решение - поставить отдельный комп на получение данных.

--------------------
Маленьких щенков-лабрадоров отдали в хорошие руки, но проказникам не сидится на месте и они решают убежать.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Your Trading Systems
Свой человек
****

Зарегистрирован: 12/08/2006
Сообщений: 72
Нахождение: Ukraine
Re: Как увеличить скорость работы экселя? [re: andy]
      #345502 - 14/09/2011 20:16

Здравствуйте!

Делать так:
1.Запущенный МТ4 с експертом, который експортит постоянно дату в SQL 2008 express.
2.VB .NET или Excel VBA берут оттуда дату, пересчитывают и выводят данные уже в ексель лист.

Все это уже воплощали в жизнь.

--------------------
Professional programming and assistance for traders.
www.utradingsystems.com

Редактировано Your Trading Systems (14/09/2011 20:18)


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
nofx
Открытый человек
***

Зарегистрирован: 14/08/2006
Сообщений: 598
Re: Как увеличить скорость работы экселя? [re: Your Trading Systems]
      #345537 - 15/09/2011 10:21

2Kobra007

обновляете построчно?
существенно ускорит если сначала набрать данные в массив vba а потом весь массив кинуть в range на листе

плюсую к andy
надо максимум работы делать в vba так что по возможности и формулы посчитать там же


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Kobra007
Змей007
***

Зарегистрирован: 09/06/2003
Сообщений: 1727
Re: Как увеличить скорость работы экселя? [re: nofx]
      #345666 - 17/09/2011 00:36

Всем большое спасибо за советы. Я сделал немного по другому, все текстовые файлы истории котировок подсоединил к акцкссу, через sql создал запросы с предварительной обработкой и их кинул на эксель через тот же sql для окончательных расчетов. Т.е. акцксс используется как промежуточный контейнер для хранения данных. Все заработало на несколько порядков быстрее. Лнтает, аж душа радуется.

Для nofx, вполне возможно, что все надо программировать на VBA вплоть до формул. Но в моей практике попался случай. Скачал приблуды для быстрого построения матриц корреляций, которые были реализованы в VBA. Оказалось, что матрица корреляций сделанная с помощью встроенных формул работает быстрее чем код. Это я к тому, что не для всех, особенно для таких как я чайников, все реализуемо в коде. Иногда, от большого ума можно не улучшить, а ухудшить.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Andrewso
Верю, СССР
будет восстановлен
***

Зарегистрирован: 31/07/2006
Сообщений: 1624
Re: Как увеличить скорость работы экселя? [re: Kobra007]
      #345677 - 17/09/2011 06:42

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

Для проверки скорости различных вариантов выполнения одной и той же задачи можно использовать макрос:

Sub Test() 'макрос измерения скорости выполнения
t=Timer
''''
Call Test2 'запуск макроса для которого измеряется скорость работы
''''
MsgBox (Timer - t)*1000 & "msec"
End Sub

planetaexcel


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
nofx
Открытый человек
***

Зарегистрирован: 14/08/2006
Сообщений: 598
Re: Как увеличить скорость работы экселя? [re: Andrewso]
      #345688 - 17/09/2011 11:01

"вполне возможно, что все надо программировать на VBA вплоть до формул. Но в моей практике попался случай. Скачал приблуды для быстрого построения матриц корреляций, которые были реализованы в VBA. Оказалось, что матрица корреляций сделанная с помощью встроенных формул работает быстрее чем код. Это я к тому, что не для всех, особенно для таких как я чайников, все реализуемо в коде. Иногда, от большого ума можно не улучшить, а ухудшить."

Действительно, табличные функции могут быстрее работать быстрее с таблицей чем в виде VBA кода, но нам ничего не мешает вызывать эти же табличные (не VBA) функции относительно массива или Range используя WorksheetFunction

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

Но Вы выбрали более серьезный вариант.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: nofx]
      #345934 - 20/09/2011 18:05

Ребят, нид хелп. Необходимо чтобы в эксель выводились последние 50 строк из "таблицы всех сделок" Квика. По всей таблице расчет идет слишком долго.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Your Trading Systems
Свой человек
****

Зарегистрирован: 12/08/2006
Сообщений: 72
Нахождение: Ukraine
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #345939 - 20/09/2011 19:00

Конечно будет долго. Потому что:
1.Данные поступают в ексель и обновляются.
2.Потом вызывается через ексель ВБА формула.
3.Потом обновляется, поступая опять в ексель.

Надо:
1.Из Квика в ВБА формулу.
2.Из ВБА в ексель.

--------------------
Professional programming and assistance for traders.
www.utradingsystems.com


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: Your Trading Systems]
      #345943 - 20/09/2011 19:28

Ухх... в ВБА не разбираюсь, как такое сделать? у вас найдется такой пример?

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Your Trading Systems
Свой человек
****

Зарегистрирован: 12/08/2006
Сообщений: 72
Нахождение: Ukraine
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #345945 - 20/09/2011 19:59

примеров масса в интернете, да и смотреть на код нужно.
Это как ставить диагноз и лечить по интернету.

--------------------
Professional programming and assistance for traders.
www.utradingsystems.com


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: Your Trading Systems]
      #345953 - 20/09/2011 21:24

В ответ на :

Your Trading Systems писал:
примеров масса в интернете, да и смотреть на код нужно.
Это как ставить диагноз и лечить по интернету.



Я так и не понял что в гугле вбивать чтобы найти то о чем вы говорили


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
nofx
Открытый человек
***

Зарегистрирован: 14/08/2006
Сообщений: 598
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #345978 - 21/09/2011 10:05

2YourTradingSystems

"Надо:
1.Из Квика в ВБА формулу.
2.Из ВБА в ексель."

Мне тоже очень интересно как вывести в формулу VBA. Предлагаете забабахать в VBA DDE сервер что ли? С парсингом Xltable формата причем.

Мне кажется проще тогда в базу данных и sql запросом брать. Можно попробовать еще зарегистрировать текстовый файл как источник данных, в него слать по ODBC а из Excel читать либо как текст либо опять таки sql.

2STMakler

Наиболее просто можно выводить все трейды в Excel по DDE (2007 конечно). Все там обновляется. Однако с таким объемом таблицы сложно получить быстродействие. Поэтому посмотрите на описанные мной выше способы.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Your Trading Systems
Свой человек
****

Зарегистрирован: 12/08/2006
Сообщений: 72
Нахождение: Ukraine
Re: Как увеличить скорость работы экселя? [re: nofx]
      #345997 - 21/09/2011 12:37

Оптимально в MS SQL or MySql скорость будет примерно одинаковая.
Получаете данные из БД, расчитаете в ВБ по некоторым формулам и делаете вывод в ексель лист, как показано в примерах.
Также включаете авторасчет в ВБа к примеру каждые 3 сек.

Пример:
http://icc.mpei.ru/documents/00000355.html
http://www.firststeps.ru/vba/excel/vbaexcel1.html

--------------------
Professional programming and assistance for traders.
www.utradingsystems.com


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: nofx]
      #346007 - 21/09/2011 12:52

В ответ на :

nofx писал:
2YourTradingSystems

Наиболее просто можно выводить все трейды в Excel по DDE (2007 конечно). Все там обновляется. Однако с таким объемом таблицы сложно получить быстродействие. Поэтому посмотрите на описанные мной выше способы.



Дык я и вывожу таблицу всех сделок по DDE из квика в эксель2010, но значения заполняют строки в экселе по порядку и очень не удобно постоянно прокручивать на последнюю полученную строку, надо чтобы значения выводились только в диапазон из 50 строк где 50-я строка экселя это последняя (текущая) строка из таблицы всех сделок


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
nofx
Открытый человек
***

Зарегистрирован: 14/08/2006
Сообщений: 598
Re: Как увеличить скорость работы экселя? [re: Your Trading Systems]
      #346010 - 21/09/2011 13:14

В ответ на :

Your Trading Systems писал:
Оптимально в MS SQL or MySql скорость будет примерно одинаковая.
Получаете данные из БД, расчитаете в ВБ по некоторым формулам и делаете вывод в ексель лист, как показано в примерах.
Также включаете авторасчет в ВБа к примеру каждые 3 сек.
[/url]




Вариант с БД понятен, подумал Вы имеете в виду отправлять напрямую и не понял как.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
nofx
Открытый человек
***

Зарегистрирован: 14/08/2006
Сообщений: 598
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #346015 - 21/09/2011 13:26

2STMakler

Ну если Вас устраивает (хотя решение достаточно нерациональное) то можно сделать так. В одну таблицу (точнее лист) выводите из Квика как сейчас. Если там есть хоть одна формула то при добавлении каждой строки будет пересчитываться. Используем в этом случае Worksheets Calculate листа в который идет ТВС. В случае если формул нет то по таймеру делаем перезапуск.

Пишем в VBA макрос который берет крайние снизу 50 строк из этой таблицы в range (используем LAstUsedRow) и пишет весь range на другой лист. Запускаем его как описано в предыдущем абзаце.

В результате боюсь что будет у Вас затык в момент работы макроса т к поток ТВС весьма серьезный.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: nofx]
      #346055 - 21/09/2011 17:11

Скажите а если сделать след. образом, по DDE в эксель выводить (онлайн )таблицу всех сделок как обычно, данные начинают заполнять строки в экселе по порядку сверху вниз и затем как нибудь вывести, к примеру в другой лист последнюю полученную строку, так будет проще чем вариант с 50-ю строками, как такое реализовать?

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
PtemМодератор
Мстительный Нах
***

Зарегистрирован: 01/07/2004
Сообщений: 1687
Нахождение: Екатеринбург
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #346056 - 21/09/2011 17:18

В ответ на :

STMakler писал:
Скажите а если сделать след. образом, по DDE в эксель выводить (онлайн )таблицу всех сделок как обычно, данные начинают заполнять строки в экселе по порядку сверху вниз и затем как нибудь вывести, к примеру в другой лист последнюю полученную строку, так будет проще чем вариант с 50-ю строками, как такое реализовать?



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

--------------------
Россия Инвест Форева-Лучший Форум Рунета


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
STMakler
Гость


Зарегистрирован: 15/08/2010
Сообщений: 8
Re: Как увеличить скорость работы экселя? [re: Ptem]
      #346062 - 21/09/2011 19:02

В ответ на :

Ptem писал:
напишите скрипт для квика на купели (портфель) . который будет обрабатывать в самом квике таблицу всех сделок в необходимое вам колличество строк, а потом экспортируйте из портфеля в excel



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


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
andy
Свой человек


Зарегистрирован: 24/06/2006
Сообщений: 64
Re: Как увеличить скорость работы экселя? [re: STMakler]
      #346614 - 30/09/2011 19:08

В ответ на :

STMakler писал:
... надо как-то сделать чтобы эксель понимал где находится последняя строка и выводил ее отдельно.



Так ведь последняя строка на листе, если это Эксель до 2007-го включительно, это строка с номером ThisWorkBook.WorkSheets (ShhetName).Range("A1").CurrentRegion.Rows.Count.
Range("A1") - это если данные начинают выгружаться с крайней правой ячейки, ну и .CurrentRegion подразумевает, что эти данные идут на лист Экселя без нарушений сплошности. ЗЫ Писал по памяти - может, где-то ошибся, коллеги поправят.

--------------------
Маленьких щенков-лабрадоров отдали в хорошие руки, но проказникам не сидится на месте и они решают убежать.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
SocolМодератор
Профессор
****

Зарегистрирован: 16/04/2003
Сообщений: 2446
Нахождение: Пермь
... надо как-то сделать чтобы эксель понимал где находится последняя с [re: andy]
      #347226 - 09/10/2011 12:35

Красивее это конечно сделать на VB как пишет Энди, но это даже формулами можно сделать имхо. Добавте справа от таблицы столбец, который будет проверять нужный столбец, и если ниже от данной ячейки нечисло, а внужной ячейке числоб значит это нужная последняя строка.

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Andrewso
Верю, СССР
будет восстановлен
***

Зарегистрирован: 31/07/2006
Сообщений: 1624
Re: ... надо как-то сделать чтобы эксель понимал где находится последняя с [re: Socol]
      #348423 - 23/10/2011 09:03

Производительность в Excel 2010: повышение производительности вычислений
msdn.microsoft.com


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Your Trading Systems
Свой человек
****

Зарегистрирован: 12/08/2006
Сообщений: 72
Нахождение: Ukraine
Re: ... надо как-то сделать чтобы эксель понимал где находится последняя с [re: Andrewso]
      #348439 - 23/10/2011 19:36

Не будет никогда той производительности в Ексель как в ВБА, тоже самое ВБА под ексель и VB .NET, тоже самое VB .NET and C# .NET

--------------------
Professional programming and assistance for traders.
www.utradingsystems.com


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Andrewso
Верю, СССР
будет восстановлен
***

Зарегистрирован: 31/07/2006
Сообщений: 1624
Re: ... надо как-то сделать чтобы эксель понимал где находится последняя с [re: Your Trading Systems]
      #348681 - 27/10/2011 07:55

GPU нас спасёт

Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Zanzizavr
Гость


Зарегистрирован: 08/09/2016
Сообщений: 18
Нахождение: Москва
Re: Как увеличить скорость работы экселя? [re: Kobra007]
      #401393 - 25/10/2018 22:36

В ответ на :

Kobra007 писал:
Подключил 54 валютные пары в cvs формате ну и немного написал всякого разного чтобы считало, ни какого собственного программного кода, только собственные экселевские средства. Каждый день надо обновить данные, заколебало ждать по полчаса пока все обновит и пересчитает. Даже после одновления, чтобы что-то ввести, думает по полминуты, пока введет и посчитает. Короче заколебало, а что делать ума не приложу. Можно ли как-то ускорить процесс? Стоит 2007.



Ускорить эксель можно только ускорив свой компьютер. За такие расчеты отвечает в основном процессор, можно оперативки побольше накинуть.


Опции: Распечатать пост   Напомнить мне!   Оповестить модератора  
Страниц в ветке: 1



Дополнительная информация
0 зарегистрированных и 4 незарегистрированных пользователей просматривает форум.

Модератор:  michaelus, SGN, EVM, x4x, 000, Akelo, Socol, Ленивый, Ptem, Kadavr, podval, untoxa, VovaM, Igonter 

Распечатать тему

Доступ и ограничения:
      Вы не можете начать новую тему
      Вы не можете отвечать на тему
      HTML включён
      UBBCode включён

Рейтинг: **
Тема прочитана: 23611

Рейтинг темы

Перейти на

Send letter to Poul | Предупреждение Poul Trade Forum

Powered by UBB.threads™ 6.5.4

Generated in 0.035 seconds in which 0.005 seconds were spent on a total of 12 queries. Zlib compression enabled.