Страницы: 1
RSS
Импорт в Excel данных из внешнего источника, Прошу помочь с настройкой импорта данных и изменения формата времени.
 
Здравствуйте форумчане.
Прошу помочь в такой если это можно назвать проблеме)

Получается тянуть в эксель из торговой системы через Rtd Server (насколько я понял, по русскоязычному это функция ДРВ https://support.office.com/ru-ru/article/ДРВ-функция-ДРВ-e0cc001a-56f0-470a-9b19-9455dc0eb593) рыночные данные типа:
AskAskSizeLastLastSizeOpenCloseHighLowVolumeLastTime
2772.51402772.2512748.52745.527852732.2527139011539377999
Но вот, несмотря на потраченное время поиска, как из этой строки постоянно обновляющихся данных выносить на другой лист в эксель книге данные.
Т.е. как появились данные - записать первой строкой, далее как только данные обновятся - записать следующей строкой, и т.д.

Хочу обратить ваше внимание что данные тиковые, т.е. как только обновляются так и так и обновляются ячейки, а не с постоянной периодичностью - например раз в секунду. Такое же обновление и у времени которое в формате:
LastTime
1539377999
Которое тоже непонятно как перевести в нормальное отображение, например через "Формат ячеек" и функции: времени, даты - почему-то не получается(
Я эксель не сказал бы что первый раз вижу, но всё же. Да и у меня уже фантазия закончилась по справкам искать и спросить не у кого.
Надеюсь на вашу помощь.
Заранее благодарен.
 
garysanders, здравствуйте.

Исходя из вашего описания, я понял следующее. На одном листе у вас появляются данные в режиме реального времени(функция ДРВ), а вы хотите при обновлении данные в этом листе, копировать в новую строчку в другой лист?
 
Jungl, здравствуйте.
Примерно так, т.е. на первом листе данные в режиме реального времени, которые с разной частотой обновляются. На втором листе как бы ведётся журнал истории всех обновлений, причём каждое обновление записывается сверху вниз на отдельной строке.
 
garysanders, ПО событию калькуляции проверять на изменений и переносить данные на лист с протоколом. Ничего вроде сложного.
По вопросам из тем форума, личку не читаю.
 
БМВ, вы имеете ввиду сначала проверять ложь/истина, потом по условию (со встроенной внутренней переменной счётчика строк) копировать на другой лист?
Я не сильно разбираюсь в эксель, но по моему это пять или больше действий будет. При 10 обновлений в секунду или не будет подтормаживать весь процесс?
Или вы другой алгоритм имели ввиду (если не трудно укажите какие функции)?  
Изменено: garysanders - 13.10.2018 20:20:28
 
Цитата
garysanders написал:
При 10 обновлений в секунду или не будет подтормаживать весь процесс?
ЭЭЭЭЭ .  Ну действия не сложные и даже 10 раз в секунду современный комп обработает нормально.
Это не функции листа естевенно, это только VBA код.
1. событие  Worksheet_Calculate должно быть при обновлении, ну по крайней их описания этой функции вроде следует, но надо проверить
2. соответственно Private Sub Worksheet_Calculate() там проверяем равенство полученных данных с последним их журнала на другом листе
3. Если не равно, то копируем в журнал , если равно, то ничего не делаем.

Единственное что надо , это немного оптимизировать сравнение, чтоб не тратит время на поиск последней строки протокола ….

Был бы пример, пусть даже не рабочий из-за отсутствия RTM сервера, то можно б было смоделировать , чтоб потом не править.
По вопросам из тем форума, личку не читаю.
 
БМВ, к сожалению примера нет, только данные в реалтайме в эксель понятно как было сделать. Про 10 запросов это я через эксель имел ввиду, через VBA думаю сильно побыстрее будет, но я к сожалению с VBA ещё хуже чем с эксель) Последнюю строку протокола я думаю сделать либо через внутреннюю переменную+1 или давать каждым строкам протокола уникальный номер.
Буду пытаться обновлять знания VBA, да и может в эксель что получится.
Благодарю вас за ответы, а сам ухожу в недры поиска решения)
Да и поздравляю с вашим 6666 сообщением на этой теме)))
 
garysanders, поищите инфо про DDE. Есть эмулятор DDE.
Сделайте с его помощью файл пример.
Например, покажите в файле места приёма информации и куда и как информация должна записываться при изменении + вручную сделайте якобы зафиксированные изменения.
Тогда помогающим будет легче понять Вашу задачу.
Когда на основе эмулятора получите то что нужно, то просто в ячейки-источники пропишите свои ДРВ.
Я так вижу.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
garysanders, Попробуйте менять значения на первом листе.
По вопросам из тем форума, личку не читаю.
 
Благодарю вас БМВ и JayBhagavan за содействие.

Пример "Copy of пример373.xlsm" предложенный БМВ,  примерно то что и нужно.

Используя предложенный JayBhagavan, DDE симулятор максимальная пропускная способность "Copy of пример373.xlsm" файла составляла 9,3 сообщения в секунду, а на RTDServer мои данные шлются со скоростью 4 сообщения в секунду, что больше чем в два раза, а процесс экселя использовал малую нагрузку на процессор. Это я так, вдруг интересно.

И это всё нормально "на костылях", но правда доработать чуть-чуть нужно (ошибки иногда выскакивают, не сохраняются данные и т.д.) да и на реальных данных пока нет возможности опробовать, но уже неплохо.

Словом буду дальше дерзать, если что отпишусь.
Страницы: 1
Наверх