Добрый день. Подскажите, как решить следующую задачу. В ячейку А вводится дата/время, в ячейке В должна быть текущая дата/время, а в ячейке С вычисление разницы по времени между А и В, при этом ячейка С не должна меняться и зависеть от текущего времени. Одним словом, при вводе информации в ячейку А, текущее время должно заморозиться в этот момент и быть неизменным, если только в ячейку А вновь не внесут данные. Надеюсь, что понятно объяснила. Буду очень признательная за помощь!!
Добрый день. Подскажите, как решить следующую задачу. В ячейку А вводится дата/время, в ячейке В должна быть текущая дата/время, а в ячейке С вычисление разницы по времени между А и В, при этом ячейка С не должна меняться и зависеть от текущего времени. Одним словом, при вводе информации в ячейку А, текущее время должно заморозиться в этот момент и быть неизменным, если только в ячейку А вновь не внесут данные. Надеюсь, что понятно объяснила. Буду очень признательная за помощь!!ЕленаG
Это можно сделать макросом. Код вставить в модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A1:A10"), Target) Is Nothing And IsDate(Target) Then Target.Offset(0, 1) = Now Target.Offset(0, 2) = Int(Now - Target) & " " & Format(Now - Target - Int(Now - Target), "hh:mm") End If End Sub
[/vba]
Это можно сделать макросом. Код вставить в модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A1:A10"), Target) Is Nothing And IsDate(Target) Then Target.Offset(0, 1) = Now Target.Offset(0, 2) = Int(Now - Target) & " " & Format(Now - Target - Int(Now - Target), "hh:mm") End If End Sub
Спасибо! Вставила в модуль. А потом что надо сделать? Извините лузера. Но я возвращаюсь на лист из бейсика, а изменений никаких нет. Можно по-шагово написать, как запустить макрос. Ещё раз благодарю :-)))
Спасибо! Вставила в модуль. А потом что надо сделать? Извините лузера. Но я возвращаюсь на лист из бейсика, а изменений никаких нет. Можно по-шагово написать, как запустить макрос. Ещё раз благодарю :-)))ЕленаG
1. Alt+F11 2. Вставить код в модуль листа. Для этого в окошке слева кликнуть по имени листа. Справа откроется модуль выбранного листа. 3. Вставить код. 4. Закрыть редактор VBA В ячейку А1 вписать дату. Макрос работает в диапазоне А1:А10. Макросы в настройках безопасности Excel должны быть разрешены.
Цитата (ЕленаG)
Можно по-шагово написать
1. Alt+F11 2. Вставить код в модуль листа. Для этого в окошке слева кликнуть по имени листа. Справа откроется модуль выбранного листа. 3. Вставить код. 4. Закрыть редактор VBA В ячейку А1 вписать дату. Макрос работает в диапазоне А1:А10. Макросы в настройках безопасности Excel должны быть разрешены.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
AlexM, Спасибо большое! Попробую адаптировать её под свою таблицу. Ещё вопросик. Что нужно сделать, чтобы вставить столбцы вначале (предварительно 4 столбца), сохраняя расчеты? Какие изменения надо внести в макрос?
AlexM, Спасибо большое! Попробую адаптировать её под свою таблицу. Ещё вопросик. Что нужно сделать, чтобы вставить столбцы вначале (предварительно 4 столбца), сохраняя расчеты? Какие изменения надо внести в макрос?ЕленаG
If Not Intersect(Range("A1:A10"), Target) Is Nothing And IsDate(Target) Then
[/vba] Указан диапазон, где он срабатывает. Т.е. А1:А10 Если перед вводимой датой 4 столбца, то диапазон надо поменять на Е1:Е20 или др. Если есть заголовок, то E2:E21 Макрос не будет срабатывать, если в водить не даты IsDate(Target) проверяет что введено в ячейку, если не дата, то ничего не произойдет.
В макросе во второй строке [vba]
Код
If Not Intersect(Range("A1:A10"), Target) Is Nothing And IsDate(Target) Then
[/vba] Указан диапазон, где он срабатывает. Т.е. А1:А10 Если перед вводимой датой 4 столбца, то диапазон надо поменять на Е1:Е20 или др. Если есть заголовок, то E2:E21 Макрос не будет срабатывать, если в водить не даты IsDate(Target) проверяет что введено в ячейку, если не дата, то ничего не произойдет.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Суббота, 06.04.2013, 17:34
Функция IsDate проверяет, является ли данное выражение корректной датой или временем. Так что вам надо поменять формат ячеек в столбце Е. В макросе в третьей строке Now - Текущая дата и время. Можно заменить на Date - Текущая дата, Time - Текущее время Возможно что-то потребуется заменить в строке макроса, где вычисляется разница. Уточните что надо.
Функция IsDate проверяет, является ли данное выражение корректной датой или временем. Так что вам надо поменять формат ячеек в столбце Е. В макросе в третьей строке Now - Текущая дата и время. Можно заменить на Date - Текущая дата, Time - Текущее время Возможно что-то потребуется заменить в строке макроса, где вычисляется разница. Уточните что надо.AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Суббота, 06.04.2013, 18:00
AlexM, пока не получилось. Мне надо, чтобы в ячейке, вводимой руками и текущем времени был формат без даты, только время. Соответственно разница рассчитывалась тоже в часах и минутах. Сейчас обновила на Time. Ввожу в Е2 время 18:00 в Е3 пусто. Но если ввожу в Е2 дату и время, то в Е3 появляется нужный параметр- ВРЕМЯ, но разница в странном виде 0 00:22. Одним словом, надо поменять вид у ТЕКУЩЕГО ВРЕМЕНИ.
AlexM, пока не получилось. Мне надо, чтобы в ячейке, вводимой руками и текущем времени был формат без даты, только время. Соответственно разница рассчитывалась тоже в часах и минутах. Сейчас обновила на Time. Ввожу в Е2 время 18:00 в Е3 пусто. Но если ввожу в Е2 дату и время, то в Е3 появляется нужный параметр- ВРЕМЯ, но разница в странном виде 0 00:22. Одним словом, надо поменять вид у ТЕКУЩЕГО ВРЕМЕНИ.ЕленаG
Доки, подскажите ещё вот что. Если не по теме, поправьте. Сейчас настраиваю условное форматирование в этой же таблице. Задача следующая. Если разница между вводимым и текущим временем больше 30 минут, то ячейка должна быть закрашена в красный цвет. Но как в формуле указать эти 30 минут в виде числа?
Доки, подскажите ещё вот что. Если не по теме, поправьте. Сейчас настраиваю условное форматирование в этой же таблице. Задача следующая. Если разница между вводимым и текущим временем больше 30 минут, то ячейка должна быть закрашена в красный цвет. Но как в формуле указать эти 30 минут в виде числа? ЕленаG
Здорово! То, что доктор прописал)) Спасибо большое! Теперь осталось с форматированием разобраться. Как же всё-таки перевести время в число. Уже мильон вариантов перепробовала, не пойму как задать условие.
Здорово! То, что доктор прописал)) Спасибо большое! Теперь осталось с форматированием разобраться. Как же всё-таки перевести время в число. Уже мильон вариантов перепробовала, не пойму как задать условие.ЕленаG
Да. Практически то, что надо, только заливку надо сделать на разницу во времени. Alex, а как Вы вывели 1/48? Я к тому, что мне правила задавать не только к 30 минутам, но и другому времени, в том числе и в часах. Спасибо!
Да. Практически то, что надо, только заливку надо сделать на разницу во времени. Alex, а как Вы вывели 1/48? Я к тому, что мне правила задавать не только к 30 минутам, но и другому времени, в том числе и в часах. Спасибо!ЕленаG
1 - это сутки, т.е 24 часа 1/24 = 1 час 1/48 = 30 мин 1/1440 = 1 мин 3/48 = 1/16 = 1 час 30 мин Еще можно не выводить нужное число. Например в УФ вместо 1/48 поставьте --"00:30" Т.е правило такое =ABS($F2-$E2)>--"00:30"
1 - это сутки, т.е 24 часа 1/24 = 1 час 1/48 = 30 мин 1/1440 = 1 мин 3/48 = 1/16 = 1 час 30 мин Еще можно не выводить нужное число. Например в УФ вместо 1/48 поставьте --"00:30" Т.е правило такое =ABS($F2-$E2)>--"00:30"AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Суббота, 06.04.2013, 19:39