Почему в Excel дата не обновляется сама — и как это исправить
Вы создали таблицу с отчётом, где нужно отображать текущую дату — и через день обнаруживаете, что значение «застыло»? Это стандартное поведение Excel: если просто ввести дату вручную (например, 15.05.2026), она станет статичной. Программа не будет её обновлять автоматически, как это делают некоторые онлайн-сервисы. Но решение есть!
В Excel для динамических дат предусмотрены специальные функции: TODAY() и NOW(). Они возвращают текущие дату и время соответственно — и пересчитываются при каждом открытии файла или обновлении листа. Однако у них есть нюансы: например, NOW() обновит не только дату, но и время до миллисекунд, что не всегда удобно. А если файл не открывать неделю, дата «зависнет» на последнем значении.
В этой статье разберём 5 способов сделать автообновляемую дату в Excel — от простейших функций до VBA-макросов для профессионалов. Также выясним, почему иногда дата перестаёт обновляться, и как заставить её меняться даже без открытия файла.
Способ 1: Функция TODAY() — простейший метод для текущей даты
Функция TODAY() — самый быстрый способ вставить в ячейку дату, которая будет обновляться при каждом открытии файла или пересчёте формул. Она не требует аргументов и работает во всех версиях Excel (включая Excel 365, Excel 2019 и Excel Online).
Как использовать:
- Выделите ячейку, где должна отображаться дата.
- Введите формулу:
=TODAY() - Нажмите
Enter.
Функция вернёт текущую дату в формате по умолчанию (например, 15.05.2026). Чтобы изменить отображение, используйте формат ячеек: правый клик → Формат ячеек → вкладка Число → выберите нужный формат (например, 14 марта 2026 г.).
Ограничения функции TODAY()
У этого метода есть 3 ключевых недостатка:
- 🔄 Не обновляется в реальном времени: дата меняется только при открытии файла или принудительном пересчёте (
F9). - ⏱️ Нет времени: если нужно отобразить ещё и часы/минуты, используйте
NOW(). - 📁 Зависит от системной даты: если на компьютере установлена неверная дата, функция вернёт её.
Способ 2: Функция NOW() — дата + время с автообновлением
Если вам нужна не только дата, но и текущее время (например, для логов или тайм-трекинга), используйте функцию NOW(). Она работает аналогично TODAY(), но возвращает полную метку времени:
=NOW()
По умолчанию Excel отобразит дату и время в формате 15.05.2026 14:30. Чтобы скрыть секунды или изменить разделители, настройте формат ячейки:
- Правый клик по ячейке →
Формат ячеек. - Выберите категорию
Все форматы. - В поле
Типвведите пользовательский формат, например:дд.мм.гггг чч:мм→15.05.2026 14:30дд ммм гггг, чч:мм→15 мая 2026, 14:30
Как отключить обновление времени в NOW()
Если вам нужно, чтобы время фиксировалось (например, для метки создания записи), используйте комбинацию Ctrl + ; (для даты) и Ctrl + Shift + ; (для времени) вместо функции.
Когда использовать NOW() вместо TODAY()
Функция NOW() незаменима в следующих сценариях:
| Задача | Пример использования | Формат ячейки |
|---|---|---|
| Логирование действий | Фиксация времени редактирования записи | дд.мм.гггг чч:мм:сс |
| Тайм-трекинг | Отметка начала/окончания задачи | чч:мм (только время) |
| Автоматические отчёты | Дата и время генерации отчёта | дд ммм гггг, чч:мм |
⚠️ Внимание: Если файл Excel открыт долгое время,NOW()не будет обновляться в реальном времени. Для принудительного пересчёта нажмитеF9или перейдите на другой лист и вернитесь обратно.
Способ 3: Комбинация клавиш для статической и динамической даты
Если вам нужно зафиксировать текущую дату (чтобы она не менялась при открытии файла), используйте горячие клавиши:
- 📅
Ctrl + ;— вставляет сегодняшнюю дату (статическую). - ⏰
Ctrl + Shift + ;— вставляет текущее время (статическое).
Эти комбинации вставляют значения, а не формулы, поэтому дата/время не будут обновляться. Это удобно для:
- 📝 Меток создания/редактирования документов.
- 📊 Фиксации даты выполнения задачи в чек-листах.
- 📅 Заполнения полей с датами в шаблонах договоров.
Чтобы совместить динамическую и статическую даты в одной таблице, используйте такой приём:
=ЕСЛИ(A1=""; TODAY(); A1)
Эта формула будет отображать текущую дату, пока ячейка A1 пустая. Как только вы введёте в A1 значение (например, с помощью Ctrl + ;), оно зафиксируется.
Выделите ячейку с функцией TODAY() или NOW()|Проверьте формат ячейки (должен быть "Дата")|Сохраните файл и закройте его|Откройте файл заново — дата должна обновиться|Если дата не изменилась, нажмите F9 для принудительного пересчёта-->
Способ 4: VBA-макрос для обновления даты без открытия файла
По умолчанию функции TODAY() и NOW() обновляются только при открытии файла или пересчёте. Но что, если нужно, чтобы дата менялась автоматически каждый день, даже если файл не открывают? Для этого понадобится VBA-макрос.
Инструкция для Excel 2019/2021/365:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В окне
Projectнайдите ваш файл и откройте разделThisWorkbook. - Вставьте следующий код:
ЗаменитеPrivate Sub Workbook_Open()Sheets("Лист1").Range("A1").Value = Date
End Sub
"Лист1"на имя вашего листа, а"A1"— на нужную ячейку. - Сохраните файл как
.xlsm(с поддержкой макросов).
Теперь при каждом открытии файла в указанной ячейке будет обновляться текущая дата. Чтобы макрос работал без открытия файла, потребуется дополнительная настройка с использованием Windows Task Scheduler (планировщик задач) для автоматического открытия и сохранения файла.
⚠️ Внимание: Макросы могут быть заблокированы настройками безопасности Excel. Чтобы разрешить их выполнение, перейдите вФайл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросови выберитеВключить все макросы(не рекомендуется для файлов из ненадёжных источников).
Способ 5: Power Query для динамических дат в импортированных данных
Если вы работаете с импортированными данными (например, из базы данных или CSV), и нужно добавить столбец с текущей датой, используйте Power Query. Этот инструмент позволяет создавать динамические столбцы, которые обновляются при обновлении запроса.
Пошаговая инструкция:
- Импортируйте данные в Excel через
Данные → Получить данные. - В редакторе Power Query выберите
Добавить столбец → Пользовательский столбец. - Введите формулу:
= DateTime.LocalNow()или для даты без времени:
= DateTime.Date(DateTime.LocalNow()) - Нажмите
ОКи загрузите данные на лист.
Теперь при каждом обновлении запроса (кнопка Обновить все на вкладке Данные) дата в столбце будет актуализироваться. Это удобно для:
- 📊 Автоматических отчётов с меткой времени.
- 🔄 Логов изменений в импортированных данных.
- 📅 Дашбордов с актуальной датой последнего обновления.
Почему дата в Excel не обновляется — и как это исправить
Если вы использовали TODAY() или NOW(), но дата «застыла», проверьте следующие моменты:
1. Режим расчётов отключён
Excel может быть переведён в режим ручного пересчёта, чтобы ускорить работу с большими файлами. В этом случае формулы не обновляются автоматически. Чтобы вернуть автоматический режим:
- Перейдите на вкладку
Формулы. - В разделе
ВычислениявыберитеАвтоматически. - Нажмите
F9, чтобы принудительно пересчитать все формулы.
2. Формат ячейки неверный
Если вместо даты вы видите число (например, 45412), значит ячейка имеет общий или числовой формат. Исправьте это:
- Правый клик по ячейке →
Формат ячеек. - Выберите категорию
Датаи укажите нужный формат.
3. Файл открыт в режиме совместимости
Файлы, сохранённые в формате .xls (Excel 97–2003), могут некорректно обрабатывать некоторые функции, включая TODAY(). Сохраните файл в современном формате .xlsx или .xlsm (если используете макросы).
4. Включён режим «Показывать формулы»
Если вместо результата вы видите саму формулу (например, =TODAY()), значит активирован режим отображения формул. Чтобы вернуть нормальный вид:
- Нажмите
Ctrl + `(гравис). - Или перейдите на вкладку
Формулыи отключите опциюПоказывать формулы.
FAQ: Частые вопросы про динамические даты в Excel
Можно ли сделать так, чтобы дата обновлялась каждую секунду?
Нет, в стандартном Excel функции TODAY() и NOW() обновляются только при пересчёте (открытии файла, нажатии F9 или изменении данных). Для обновления в реальном времени потребуется:
- Использовать VBA с таймером (
Application.OnTime). - Подключить внешний скрипт (например, на Python), который будет обновлять файл.
Обратите внимание: частые обновления могут замедлить работу Excel.
Как сделать, чтобы дата обновлялась только в рабочие дни?
Используйте комбинацию функций TODAY() и РАБДЕНЬ():
=РАБДЕНЬ(TODAY(); 0)
Эта формула вернёт сегодняшнюю дату, если она рабочий день, или последнюю рабочую дату (например, если сегодня суббота, отобразится пятница).
Почему при копировании формулы дата не обновляется?
Если вы копируете ячейку с TODAY() в другую ячейку, формула остаётся динамической и будет показывать текущую дату. Однако если вы используете специальную вставку (Вставить → Значения), формула заменяется на статическое значение. Чтобы этого избежать:
- Копируйте ячейку стандартным способом (
Ctrl + C→Ctrl + V). - Или используйте
Правка → Заменить, чтобы обновить формулы массово.
Можно ли сделать автообновляемую дату в Google Таблицах?
Да, в Google Sheets также есть функции =TODAY() и =NOW(), которые работают аналогично Excel. Кроме того, в Google Таблицах дата обновляется чаще — при любом изменении листа или каждые несколько минут (в зависимости от активности).
Чтобы настроить автоматическое обновление каждую минуту, используйте скрипт Apps Script:
function updateDate() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.getRange("A1").setValue(new Date());
}
И настройте триггер на выполнение функции по таймеру.
Как зафиксировать дату, которая была актуальна на момент создания файла?
Если вам нужна статическая дата (например, дата создания отчёта), используйте:
- Горячие клавиши:
Ctrl + ;(только дата) илиCtrl + Shift + ;(только время). - Функцию
=СЕГОДНЯ(), а затем скопируйте ячейку и вставьте какЗначения(Правка → Специальная вставка → Значения).
После этого дата останется неизменной даже при открытии файла через год.