Новости:

К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Главное меню

Перенос динамически изменяющихся данных в таблицу через равные интервалы времени

Автор Magyar, 22.05.2012, 00:24

« назад - далее »

Magyar

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

Poltava

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

Wasilic

Цитата: Magyar от 22.05.2012, 00:24
Есть необходимость заносить их в таблицу, чтоб каждую минуту (2 минуты, десять и т.п.) новые данные записывались в новой строке.
Выполнимо ли и как?
Так можно.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Magyar

Цитата: Poltava от 22.05.2012, 01:46
Ну это смотря как вы эти данные туда записываете! Самый примитив пришедший в голову накидал в файле ниже. Отлавливаем событие изменение на листе -- проверяем входит ли диапазон в контролируемую область -- считываем данные в таблицу. И еще не совсем понятно что писать в первый столбец посему сделал как представил себе. Нужно же с чего то начинать

Дело в том, что данные поступают через DDE постоянно, каждую секунду. А заносить в таблицу нужно раз в минуту, остальные 59 секунд данные пропускаются

Magyar

Цитата: Wasilic от 22.05.2012, 09:35
Цитата: Magyar от 22.05.2012, 00:24
Есть необходимость заносить их в таблицу, чтоб каждую минуту (2 минуты, десять и т.п.) новые данные записывались в новой строке.
Выполнимо ли и как?
Так можно.

Моя недоработка - не сказал, что постоянно изменяющиеся данные в ячейках - формулы, берущие данные из других ячеек. А как я понял .ClearContents чистит ячейки. С формулами вместе.

А еще... Спасибо, ребята, за активное участие! На другом форуме программеров просто показали, что я лузер, и на том конец

Wasilic

Цитата: Magyar от 22.05.2012, 12:29
постоянно изменяющиеся данные в ячейках - формулы, берущие данные из других ячеек
Какие формулы? В каких ячейках?
В ячейках обведенных кругом?
Так оттуда берется только результат и заносится в таблицу.
А таблица очищается при каждом следующем открытии книги.
Не надо очищать, сообщите. Откуда мне или другим знать, как надо.
В данном случае, это был пример для решения поминутного выполнения какой либо задачи. А в остальном - думайте.
Правильно будет, если будет пример, а не картинка, как положено согласно п.2 правил_форума и четко поставлена задача!
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Poltava

На сколько я понял человека ему нужен макрос который будет срабатывать раз в t секун и писать время и данные из этих ячеек в таблицу. Но у меня вопрос у вас эти данные пишутся в то время как файл открыт или закрыт или в любом случае ??? и данные обязательно в этот файл или можно в другой???
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.

Magyar

Цитата: Poltava от 22.05.2012, 16:29
На сколько я понял человека ему нужен макрос который будет срабатывать раз в t секун и писать время и данные из этих ячеек в таблицу. Но у меня вопрос у вас эти данные пишутся в то время как файл открыт или закрыт или в любом случае ??? и данные обязательно в этот файл или можно в другой???

Все именно так! Данные пишутся только при открытом файле. Можно и в другой файл

Poltava

Попробовал с циклами на время работать просто невозможно ну или я незнаю как правильно, в общем у меня толкового ничего не вышло. Но попробовал доработать свой алгоритм из первого поста
Посмотрите такой вариант может он приблизит нас к решению задачи. У него конечно куча своих минусов и как он будет себя вести у вас я не знаю но попробуйте. Если в вкратце то предлагаю такой алгоритм.
1) При открытии книги создаем глобальный таймер
2) Далее при изменении в любой из ячеек просматриваемого диапазона сравниваем текущий таймер с висящем в памяти и если не привешен минимально заданный интервал выходим из процедуры
3) Если интервал превышен проверяем какие ячейки вызвали событие и если это отслеживаемые ячейки то пишем данные в таблицу
Минусы алгоритма
- непонятно сколько памяти и ресурсов ЦП он будет сжирать при постоянном изменении в ячейках
- использован таймер который отсчитывает сутки от 00:00 следовательно при переходе в новые сутки он будет сброшен и перестанут писаться значения в базу (ведь теперь условие будет выполняться всегда неверно!!!)
- потеря точности ведь на анализ нужно время допустим пол секунды где гарантия что данные за это время не поменяются.
- ну и еще можно найти если покопаться

В общем пробуйте если будет работать будем думать дальше
Не пытайтесь спорить с дебилом. Иначе вы опуститесь до его уровня. Где он задавит вас своим опытом.