Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2013, 06:44   #1
paylevan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 18
По умолчанию Текущее время в формуле с условием ЕСЛИ()

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

Прошу уточнить, как правильно оформить формулу со следующим условием: ЕСЛИ(И(Текущее время > 8.00 утра;Текущее время < 23.00 вечера);1;0).

Пробовал с ТДАТА() и СЕГОДНЯ(), но не получается.
paylevan вне форума Ответить с цитированием
Старый 15.11.2013, 07:19   #2
VictorK
Пользователь
 
Регистрация: 24.05.2008
Сообщений: 64
По умолчанию

Код:
=ЕСЛИ(И(ОСТАТ(ТДАТА();1)>8/24;ОСТАТ(ТДАТА();1)<23/24);1;0)
VictorK вне форума Ответить с цитированием
Старый 15.11.2013, 07:30   #3
gling
Форумчанин
 
Регистрация: 23.01.2010
Сообщений: 261
По умолчанию

попробуйте ВРЕМЯ(ЧАС(ТДАТА());МИНУТЫ(ТДАТА()); СЕКУНДЫ(ТДАТА()))
gling вне форума Ответить с цитированием
Старый 15.11.2013, 08:29   #4
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

можно проще
Код:
=ЕСЛИ( И((ЧАС(ТДАТА())) >8; (ЧАС(ТДАТА())) <23);1;0)
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!
SaLoKiN вне форума Ответить с цитированием
Старый 15.11.2013, 09:13   #5
paylevan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от VictorK Посмотреть сообщение
Код:
=ЕСЛИ(И(ОСТАТ(ТДАТА();1)>8/24;ОСТАТ(ТДАТА();1)<23/24);1;0)
Данное решение рассчитывает правильно только в момент ручного пересчёта. То есть, к сожалению, при использовании Вашего варианта значение в ячейке не обновляется в фоновом режиме, когда приходит нужное время и, соответственно, наступает условие ЕСЛИ().

Можно ли доработать Вашу формулу таким образом, чтобы при приходе заданного в условии ЕСЛИ() времени, значение в ячейке обновлялось автоматически?
paylevan вне форума Ответить с цитированием
Старый 15.11.2013, 09:17   #6
paylevan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от gling Посмотреть сообщение
попробуйте ВРЕМЯ(ЧАС(ТДАТА());МИНУТЫ(ТДАТА()); СЕКУНДЫ(ТДАТА()))
Данное решение рассчитывает правильно только в момент ручного пересчёта. То есть, к сожалению, при использовании Вашего варианта значение в ячейке не обновляется в фоновом режиме, когда приходит нужное время и, соответственно, наступает условие ЕСЛИ().

Можно ли доработать Вашу формулу таким образом, чтобы при приходе заданного в условии ЕСЛИ() времени, значение в ячейке обновлялось автоматически?
paylevan вне форума Ответить с цитированием
Старый 15.11.2013, 09:17   #7
paylevan
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от SaLoKiN Посмотреть сообщение
можно проще
Код:
=ЕСЛИ( И((ЧАС(ТДАТА())) >8; (ЧАС(ТДАТА())) <23);1;0)
Данное решение рассчитывает правильно только в момент ручного пересчёта. То есть, к сожалению, при использовании Вашего варианта значение в ячейке не обновляется в фоновом режиме, когда приходит нужное время и, соответственно, наступает условие ЕСЛИ().

Можно ли доработать Вашу формулу таким образом, чтобы при приходе заданного в условии ЕСЛИ() времени, значение в ячейке обновлялось автоматически?
paylevan вне форума Ответить с цитированием
Старый 15.11.2013, 10:30   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от paylevan Посмотреть сообщение
Можно ли доработать Вашу формулу таким образом, чтобы при приходе заданного в условии ЕСЛИ() времени, значение в ячейке обновлялось автоматически?
Выполнение событий точно при наступлении определенного времени формулами сделать не получится. Наиболее правильный способ - использовать макросы:

Код:
Application.OnTime
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 15.11.2013, 14:58   #9
Czeslaw
Пользователь
 
Регистрация: 08.07.2013
Сообщений: 95
По умолчанию

Как вариант такая формула
=IF(AND(HOUR(NOW())/24+MINUTE(NOW())/60/24>8/24;HOUR(NOW())/24+MINUTE(NOW())/60/24<23/24);1;0)
и ещё такая без минут должна работать автоматически
=IF(AND(HOUR(NOW())/24>8/24;HOUR(NOW())/24<23/24);1;0)

Последний раз редактировалось Czeslaw; 15.11.2013 в 15:37.
Czeslaw вне форума Ответить с цитированием
Старый 15.11.2013, 15:23   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Как вариант такая формула
Все формулы обновляются только после пересчета значения. Т.е. нужно либо вручную, либо макросом это значение пересчитывать. Если использовать макрос, то нет смысла при этом пользоваться формулой.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текущее время (системное время ) Sirk0 Общие вопросы Delphi 27 07.03.2015 17:52
Текущее время roxy7 Microsoft Office Access 7 14.06.2012 13:06
Текущее время _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 1 20.06.2010 15:59
Текущее время Aндрей Помощь студентам 1 08.05.2009 14:01
Текущее время Greyglass Microsoft Office Excel 4 22.11.2007 13:25