У меня такая задача: есть три ячейки A1, A2, A3. В ячейках A1 и A2 - данные, в ячейке A3 нужен результат, а именно: если ячейка A1 удовлетворяет условию, то записать в ячейку A3 значение ячейки A2, иначе - оставить в ячейке A3 её предыдущее значение. Желательно без макроса ибо здесь я совсем не соображаю.
У меня такая задача: есть три ячейки A1, A2, A3. В ячейках A1 и A2 - данные, в ячейке A3 нужен результат, а именно: если ячейка A1 удовлетворяет условию, то записать в ячейку A3 значение ячейки A2, иначе - оставить в ячейке A3 её предыдущее значение. Желательно без макроса ибо здесь я совсем не соображаю.NIKE
Спасибо за быстрый отклик, я наверное плохо написал что нужно. Проблема в том, что предыдущей ссылки нет, в ячейки A1, A2 настроен экспорт из другой программы. Вообще нужно чтобы если в ячейке A1 секунда=59, то в A3 записывается котировка из A2, и меняется значение только через минуту, т. е. когда в A1 секунда снова будет равна 59. Получается что при постоянно изменяющихся данных в A1 и A2, значение в A3 меняется примерно раз в минуту (за исключением, когда в 59 секунду(за 1 секунду) котировка изменилась несколько раз).
Спасибо за быстрый отклик, я наверное плохо написал что нужно. Проблема в том, что предыдущей ссылки нет, в ячейки A1, A2 настроен экспорт из другой программы. Вообще нужно чтобы если в ячейке A1 секунда=59, то в A3 записывается котировка из A2, и меняется значение только через минуту, т. е. когда в A1 секунда снова будет равна 59. Получается что при постоянно изменяющихся данных в A1 и A2, значение в A3 меняется примерно раз в минуту (за исключением, когда в 59 секунду(за 1 секунду) котировка изменилась несколько раз).NIKE
NIKE, вы немного не так подходите. У вас DDE-ссылки на данные внешней программы, соответственно, в Excel вы данные имеете в реалтайме, НО! - формулы здесь неприменимы в принципе. Потому что формулы умеют обрабатывать уже имеющийся набор данных, но не умеют добавлять новые данные (например, вставлять строки, или заполнять ячейки вне самой ячейки с формулой). Поэтому нормальная реализация DDE-клиента возможна только с использование макросов. Но тогда реализация достаточно проста - реакция настраивается либо на событие изменения данных в ячейке(ах), либо по таймеру. И в момент возникновения события - конкретные текущие значения могут быть соответствующим образом обработаны (переписаны в другие ячейки, сохранены в накопительной базе (/массиве/коллекции/etc)), с ними могут быть проведены необходимые действия по анализу и т.д. Например, ваша обработка будет заключаться в том, чтобы хранить предыдущее значение даты-времени и котировки, и при изменении значения минуты в DateTime - сбрасывать последнее сохранённое значение котировки в нужную ячейку.
Или я где-то чего-то не понимаю...
NIKE, вы немного не так подходите. У вас DDE-ссылки на данные внешней программы, соответственно, в Excel вы данные имеете в реалтайме, НО! - формулы здесь неприменимы в принципе. Потому что формулы умеют обрабатывать уже имеющийся набор данных, но не умеют добавлять новые данные (например, вставлять строки, или заполнять ячейки вне самой ячейки с формулой). Поэтому нормальная реализация DDE-клиента возможна только с использование макросов. Но тогда реализация достаточно проста - реакция настраивается либо на событие изменения данных в ячейке(ах), либо по таймеру. И в момент возникновения события - конкретные текущие значения могут быть соответствующим образом обработаны (переписаны в другие ячейки, сохранены в накопительной базе (/массиве/коллекции/etc)), с ними могут быть проведены необходимые действия по анализу и т.д. Например, ваша обработка будет заключаться в том, чтобы хранить предыдущее значение даты-времени и котировки, и при изменении значения минуты в DateTime - сбрасывать последнее сохранённое значение котировки в нужную ячейку.
AndreTM, вы всё правильно поняли. А можете помочь с написанием макроса применимо к моей задаче? Все что мне нужно это как вы написали - "при изменении значения минуты в DateTime - сбрасывать последнее сохранённое значение котировки в нужную ячейку".
AndreTM, вы всё правильно поняли. А можете помочь с написанием макроса применимо к моей задаче? Все что мне нужно это как вы написали - "при изменении значения минуты в DateTime - сбрасывать последнее сохранённое значение котировки в нужную ячейку".NIKE
"событие изменения данных в ячейке(ах), либо по таймеру" - думаю нет. событие изменения данных не произойдёт, ну а таймер "неповоротлив". Нужно срабатывать либо по на событие пересчёта (завязать на эту ячейку любую формулу), либо например на событие текстбокса (завязать на ячейку текстбокс). Есть ещё инструмент SetLinkOnData, но это сложно
"событие изменения данных в ячейке(ах), либо по таймеру" - думаю нет. событие изменения данных не произойдёт, ну а таймер "неповоротлив". Нужно срабатывать либо по на событие пересчёта (завязать на эту ячейку любую формулу), либо например на событие текстбокса (завязать на ячейку текстбокс). Есть ещё инструмент SetLinkOnData, но это сложно Hugo
А нельзя сделать так: пусть в ячейку A1 транслируется время, в ячейку A2 транслируется цена. Завести переменную (например - x), в которую будет записываться следующее: если секунда(A1)=59, то x присвоить значение A2. И как -то этот x транслировать в ячейку A3?
А нельзя сделать так: пусть в ячейку A1 транслируется время, в ячейку A2 транслируется цена. Завести переменную (например - x), в которую будет записываться следующее: если секунда(A1)=59, то x присвоить значение A2. И как -то этот x транслировать в ячейку A3?NIKE
Hugo, событие изменения данных точно не происходит при работе с DDE-сервером? И естественно, можно же завязать копию данных, типа в B1: =A1, и срабатывать уже на ней. В любом случае, путь есть.
NIKE, не упирайтесь со своим вИдением вопроса. Начнём с того, что секунда=59 может и не быть: таймер может перейти сразу с 58-й секунды на новую минуту, могут быть задержки в канале ИНета - и что, пропустите обновление?
Hugo, событие изменения данных точно не происходит при работе с DDE-сервером? И естественно, можно же завязать копию данных, типа в B1: =A1, и срабатывать уже на ней. В любом случае, путь есть.
NIKE, не упирайтесь со своим вИдением вопроса. Начнём с того, что секунда=59 может и не быть: таймер может перейти сразу с 58-й секунды на новую минуту, могут быть задержки в канале ИНета - и что, пропустите обновление?AndreTM
То что 59 секунды может не быть согласен, но как правило бывает, т. к. инструмент очень ликвидный. (ну да это я так -мои сложности). Вообще рассчитывал что задачка не трудная и решение с ходу найдётся. Может ли кто-то помочь с решением, в виде конкретной реализации с кодом?
То что 59 секунды может не быть согласен, но как правило бывает, т. к. инструмент очень ликвидный. (ну да это я так -мои сложности). Вообще рассчитывал что задачка не трудная и решение с ходу найдётся. Может ли кто-то помочь с решением, в виде конкретной реализации с кодом?NIKE