Страницы: 1
RSS
Создать накопительный регистр для сохранения данных, поступающих по DDE
 
Доброго времени суток!
Прошу помочь в решении задачки
На лист1 поступает поток данных, необходимо создать накопительный регистр для сохранения исторических данных.
Смотрел похожие темы, но пока не получается переделать под свою задачу.
Приму любой вариант и VBA и формульный
Заранее благодарю.
 
Сергей, здравствуйте!
Вариант "после" отсутствует - покажите, что нужно-то
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Уточняю задачу:
Немного переделал файл, чтобы стало понятнее
Весь поток данных проходящий через диапазон A2:D11 листа Лента необходимо сохранить на Лист1 в столбцах A:D
Последняя сделка отображается в диапазоне A2:D2 листа Лента
Источник выдает максимальное кол-во строк не более 10, если бы этого ограничения не было, не было бы и вопроса.
Всего сделок может быть от 10000
Кол-во сделок за секунду может быть разным
Изменено: Сергей - 06.06.2020 12:26:49
 
Цитата
Сергей: Уточняю задачу:
ничего подобного - ещё непонятнее стало
вам нужно просто копировать очередной отчёт/выгрузку в общий список, добавляя снизу?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Да, только добавляя сверху
 
Сергей, так бы и писали - причём тут вообще "импорт по DDE" и, тем более, "опять"  :D
Название: макрос копирования очередного отчёта в таблицу хранения сверху (структура одинаковая)

Решение: там всё просто, но пока показать не могу
1. вставить пустых строк сверху в базе по количеству новых данных
2. скопипастить данные

Всего 2 шага - погуглите  ;)
Изменено: Jack Famous - 06.06.2020 13:50:14
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Данные динамически меняются. Импорт DDE идет в диапазон Лента!A2:D2.  за секунду может пройти десятки сделок и предыдущие данные протолкнут вниз по диапазону. Повторюсь, проблемы бы не было, но проталкивает всего 10 строк, потом они затираются более новыми данными и т.д.
Копипастить из Лента!A2:D2 необходимо только в том случае если информация обновилась
Изменено: Сергей - 06.06.2020 14:20:48
 
Цитата
Сергей: проталкивает всего 10 строк, потом они затираются более новыми данными и т.д.
а нельзя просто дождаться окончания выгрузки и потом переносить?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Когда выгрузка закончиться останутся данные только по последним 10 сделкам
 
Абдурахман ибн, если дождаться нельзя из=за затирания, то надо узнать периодичность "обновления" и переносить каждые N сек
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Полагаю надо переносить по изменению ячейки A2, при этом переносить только новые данные, чтобы не было дублирования
 
Посмотрите, пожалуйста, эту тему с рекомендациями Владимира (ZVI).
Владимир
 
Цитата
Сергей написал:
Приму любой вариант и VBA и формульный
а как же dde?
В Word запускаю, в Excel корректно копируется
Код
Sub d()
    Dim ch&
    ch = Application.DDEInitiate("Excel", "system")
    Application.DDEExecute ch, "[Copy(""[Лента.xlsx]Лента!R2C1:R12C4"",""ИНДЕКС([Лента.xlsx]Лист1!C1;ЕСЛИОШИБКА(ПОИСКПОЗ(9E+307;[Лента.xlsx]Лист1!C1)+1;1))"")]"
    Application.DDETerminate ch
End Sub
Собственно, возможно изначально настроить запись через dde в первую непустую строку
Страницы: 1
Наверх