Почему Excel не обновляет время автоматически (и как это исправить)
Вы когда-нибудь вставляли в ячейку Excel текущее время, а через час обнаруживали, что оно так и осталось прежним? Это не баг программы, а особенность работы с данными. По умолчанию Excel фиксирует статическое значение при вводе — будь то текст, число или время. Чтобы ячейка показывала динамически обновляемое время, нужно использовать специальные функции или макросы.
Проблема в том, что большинство пользователей просто нажимают Ctrl+Shift+; для вставки времени — и удивляются, почему через 10 минут ничего не изменилось. Между тем, в Excel есть минимум 5 способов сделать так, чтобы время обновлялось автоматически: от простых функций до скриптов на VBA. Далее разберём каждый метод с примерами и нюансами.
Способ 1: Функция ТДАТА — простое решение для даты и времени
Самый очевидный способ — использовать встроенную функцию =ТДАТА (или =NOW в английской версии). Она возвращает текущие дату и время, обновляясь при каждом изменении листа или пересчёте формул. Достаточно ввести её в любую ячейку:
=ТДАТА
Функция вернёт результат в формате дд.мм.гггг чч:мм:сс. Если нужен только временной компонент, примените формат ячейки время через контекстное меню (Ctrl+1).
- ✅ Плюсы: не требует макросов, работает во всех версиях Excel.
- ❌ Минусы: обновляется только при действиях пользователя (ввод данных, пересчёт).
- ⚠️ Нюанс: если отключить автоматический пересчёт (
Формулы → Параметры вычислений → Вручную), функция перестанет обновляться.
Введите =ТДАТА в ячейку A1
Установите формат ячейки"Время"
Измените значение в любой другой ячейке
Убедитесь, что время обновилось-->
⚠️ Внимание: Если файл Excel открыт на двух компьютерах одновременно (например, через OneDrive), функция ТДАТА может показывать разное время — в зависимости от системных часов каждого устройства.
Способ 2: Разделение даты и времени (СЕГОДНЯ + ВРЕМЯ)
Иногда нужно обновлять только время, без даты. Для этого комбинируют две функции:
=СЕГОДНЯ + ВРЕМЯ(0;0;0)
Но этот подход неверен! Функция ВРЕМЯ в Excel не обновляется автоматически — она фиксирует статическое значение. Правильное решение:
=ТДАТА - ЦЕЛОЕ(ТДАТА)
Эта формула вычитает из полной даты её целую часть (день), оставляя только дробный компонент — время. Чтобы отобразить его корректно, примените формат ячейки время.
| Формула | Результат (пример) | Обновляется? |
|---|---|---|
=ТДАТА | 15.05.2026 14:30:45 | Да |
=СЕГОДНЯ | 15.05.2026 | Да |
=ВРЕМЯ(14;30;0) | 14:30:00 | Нет |
=ТДАТА-ЦЕЛОЕ(ТДАТА) | 0,60417 (отображается как 14:30:00) | Да |
Критическая ошибка: многие пользователи пытаются использовать =ЧАС(ТДАТА)&":"&МИНУТЫ(ТДАТА) для отображения времени. Эта формула преобразует время в текст и перестаёт обновляться!
Способ 3: Горячие клавиши для фиксированного и динамического времени
Excel предлагает быстрые комбинации для вставки текущих даты и времени — но они работают по-разному:
- 🔹
Ctrl+;— вставляет фиксированную текущую дату (не обновляется). - 🔹
Ctrl+Shift+;— вставляет фиксированное текущее время. - 🔹
Ctrl+Shift+:— вставляет дату и время (тоже фиксированные).
Эти сочетания удобны для логов или меток времени, но не подходят для динамического обновления. Например, если вы ведёте журнал звонков и нужно зафиксировать время разговора — используйте Ctrl+Shift+;. А для отображения"живого" времени применяйте =ТДАТА.
Способ 4: Автоматическое обновление времени каждую секунду (VBA)
Если нужно, чтобы время обновлялось в реальном времени (например, для табло или мониторинга), стандартных функций Excel недостаточно. Здесь поможет макрос на VBA:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Дважды кликните на лист в проекте (например,
Лист1). - Вставьте код:
Private Sub Worksheet_ActivateApplication.OnTime Now + TimeValue("00:00:01"),"UpdateTime"
End Sub
Sub UpdateTime
Range("A1").Value = Now
Application.OnTime Now + TimeValue("00:00:01"),"UpdateTime"
End Sub
- Закройте редактор и разрешите выполнение макросов при открытии файла.
Этот код будет обновлять ячейку A1 каждую секунду, пока лист активен. Для остановки обновлений закройте файл или отключите макросы.
⚠️ Внимание: Частое обновление (каждую секунду) может замедлить работу Excel, особенно в больших файлах. Для производственных задач лучше использовать интервал в 1–5 минут.
Как изменить интервал обновления?
В строке TimeValue("00:00:01") замените 01 на нужное количество секунд. Например, TimeValue("00:05:00") обновит время каждые 5 минут.
Способ 5: Обновление времени при открытии файла (без VBA)
Если вам не нужно постоянное обновление, а достаточно актуального времени при открытии документа, используйте этот трюк:
- Создайте именованный диапазон:
- Перейдите в
Формулы → Диспетчер имён → Создать. - В поле
ИмявведитеAutoTime. - В поле
Диапазонвведите=ТДАТА.
- Перейдите в
=AutoTime.Теперь при каждом открытии файла время будет обновляться автоматически. Этот метод работает без макросов и подходит дляемых документов.
Распространённые ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при работе с динамическим временем. Вот самые частые:
- 🚫 Преобразование в текст: Формулы вроде
=ТЕКСТ(ТДАТА;"чч:мм")обновляются, но возвращают текст, а не числовое значение времени. Это мешает дальнейшим вычислениям. - 🚫 Ручной пересчёт: Если в настройках Excel установлен режим
Вычисления вручную, функцииТДАТАиСЕГОДНЯперестанут обновляться. Проверьте вФормулы → Параметры вычислений. - 🚫 Копирование значений: При копировании ячейки с
=ТДАТАчерезСпециальная вставка → Значенияформула заменяется на фиксированное время.
Чтобы проверить, работает ли автоматическое обновление, измените системное время на компьютере на 1–2 минуты вперёд и обновите лист (F9). Если время в ячейке не изменилось — ищите ошибку в формулах или настройках.
FAQ: Ответы на частые вопросы
Можно ли сделать так, чтобы время обновлялось каждую секунду без VBA?
Нет. Стандартные функции Excel (ТДАТА, СЕГОДНЯ) обновляются только при пересчёте формул (изменении данных, нажатии F9 или открытии файла). Для обновления каждую секунду обязательно нужен VBA или внешние надстройки.
Почему после сохранения файла время сбивается на несколько часов?
Это происходит из-за различия в часовых поясах. Excel сохраняет время в формате UTC, а при открытии конвертирует его согласно системным настройкам компьютера. Чтобы избежать проблемы, используйте функцию =ТДАТА-ВРЕМЯ(3;0;0) (где 3 — разница с UTC в часах для вашего региона).
Как зафиксировать время в ячейке, чтобы оно не обновлялось?
Используйте комбинации клавиш:
Ctrl+;— для даты,Ctrl+Shift+;— для времени.
Или скопируйте ячейку с =ТДАТА и вставьте как Значения (Правая кнопка → Специальная вставка → Значения).
Можно ли сделать автоматическое обновление времени в Google Таблицах?
Да, в Google Sheets используется та же функция =NOW, но она обновляется каждые 30 минут или при изменении листа. Для более частого обновления нужны скрипты на Google Apps Script (аналог VBA). Пример скрипта для обновления каждую минуту:
function updateTime {
SpreadsheetApp.getActiveSheet.getRange('A1').setValue(new Date);
}
// Установите триггер на выполнение каждую минуту в меню"Триггеры"
Почему в моём Excel нет функции ТДАТА?
Вероятно, у вас установлена не русская версия Excel. В английской версии эта функция называется =NOW. Также проверьте регистр: в Excel регистр не важен, но опечатки (например, =тдата с маленькой буквы) приведут к ошибке #ИМЯ?.