Динамические даты в Microsoft Excel — это не просто удобство, а необходимый инструмент для отчётности, планирования и анализа данных. Представьте: вы создали шаблон ежемесячного отчёта, где дата должна автоматически обновляться при каждом открытии файла. Или ведёте журнал задач, где важно видеть актуальную дату без ручного ввода. Без знания простых приёмов вам придётся ежедневно править ячейки вручную — а это ошибки, потеря времени и риск забыть обновить критичные данные.
В этой статье разберём 5 способов добавить в Excel обновляемую дату — от элементарных функций до продвинутых макросов. Вы узнаете, как заставить ячейку показывать текущую дату или время, как «зафиксировать» динамическую дату на определённый момент, и почему иногда формулы перестают работать. А ещё — скрытые нюансы, о которых не пишут в стандартных инструкциях.
Спойлер: самый надёжный метод зависит от вашей задачи. Для простого отображения сегодняшней даты хватит одной функции, а для сложной автоматизации потребуется VBA. Но обо всём по порядку.
1. Функция TODAY: простейший способ вставить текущую дату
Функция =TODAY() — это базовый инструмент для отображения сегодняшней даты в формате, который обновляется при каждом открытии файла или пересчёте формул. Она не требует аргументов и работает во всех версиях Excel (включая Excel 365, Excel 2019 и Excel Online).
Как её использовать:
- Выделите ячейку, где должна отображаться дата.
- Введите
=TODAY()и нажмитеEnter. - При необходимости измените формат ячейки через
Главная → Формат → Формат ячеек → Числовой формат → Дата.
⚠️ Внимание: Если дата не обновляется при открытии файла, проверьте настройки пересчёта формул. Перейдите в Формулы → Параметры вычислений и выберите Автоматически. В ручном режиме (Вручную) функция TODAY() не будет обновляться до нажатия F9.
Функция TODAY() имеет ограничения:
- 📅 Не показывает время — только дату.
- ⏰ Не обновляется в реальном времени (только при пересчёте или открытии файла).
- 🔄 Не фиксирует дату на момент ввода — всегда показывает «сегодня».
2. Функция NOW: дата + время с автоматическим обновлением
Если вам нужна не только дата, но и текущее время, используйте функцию =NOW(). Она работает аналогично TODAY(), но возвращает полную метку времени (например, 15.05.2026 14:30:45).
Примеры применения:
- 📊 Логирование времени изменения данных.
- ⏱️ Отслеживание продолжительности задач (например, «время начала» и «время окончания»).
- 📅 Автоматическая генерация временных меток в журналах.
Чтобы отформатировать вывод, выделите ячейку с NOW(), нажмите Ctrl+1 и выберите нужный формат. Например:
дд.мм.гггг чч:мм→15.05.2026 14:30дд ммм гггг, чч:мм:сс→15 мая 2026, 14:30:45
⚠️ Внимание: Функция NOW() обновляется при каждом изменении в книге (даже если вы просто добавили символ в другую ячейку). Это может создать ложное впечатление «зависания» времени, если файл долго открыт без сохранения. Чтобы принудительно обновить значение, нажмите F9.
3. Как сделать дату статической (необновляемой)
Иногда требуется зафиксировать дату на момент создания записи — например, в журнале событий или логе изменений. Для этого есть три способа:
Способ 1: Горячие клавиши
- 📅
Ctrl+;— вставляет текущую дату (статическую). - ⏰
Ctrl+Shift+;— вставляет текущее время (статическое). - 📅⏰
Ctrl+;+Пробел+Ctrl+Shift+;— дата и время вместе.
Способ 2: Преобразование формулы в значение
- Введите в ячейку
=TODAY()или=NOW(). - Скопируйте ячейку (
Ctrl+C). - Выделите её же и выберите
Главная → Вставить → Значения(илиCtrl+Alt+V → В).
Способ 3: Макрос VBA (для продвинутых)
Sub InsertStaticDate()
ActiveCell.Value = Now
ActiveCell.NumberFormat = "dd.mm.yyyy hh:mm:ss"
End Sub
Этот код вставит в выделенную ячейку текущую дату и время, которые не будут меняться. Чтобы использовать макрос, нажмите Если файл сохранён в формате .xls (Excel 97-2003), при открытии в новых версиях даты могут отображаться как числа (например, Alt+F11, вставьте код в модуль и назначьте его на кнопку или горячую клавишу.
Почему статическая дата может «сбиться»?
45341 вместо 15.05.2026). Чтобы исправить, измените формат ячейки на «Дата».
4. Динамическая дата с учётом рабочих дней (функция WORKDAY)
Если вам нужна дата, которая обновляется с учётом только рабочих дней (исключая выходные и праздники), используйте функцию =WORKDAY(). Она полезна для расчёта сроков выполнения задач или поставок.
Синтаксис:
=WORKDAY(начальная_дата; количество_дней; [праздники])
начальная_дата— дата отсчёта (можно использоватьTODAY()).количество_дней— сколько рабочих дней добавить/вычесть.[праздники]— необязательный диапазон с датами праздников.
Примеры:
| Формула | Результат (если сегодня 15.05.2026, среда) | Пояснение |
|---|---|---|
=WORKDAY(TODAY(); 5) |
22.05.2026 |
Через 5 рабочих дней (исключая субботу и воскресенье). |
=WORKDAY(TODAY(); -2) |
13.05.2026 |
2 рабочих дня назад. |
=WORKDAY(TODAY(); 10; A2:A5) |
30.05.2026 |
10 рабочих дней с учётом праздников в ячейках A2:A5. |
⚠️ Внимание: Функция WORKDAY не обновляется в реальном времени — она пересчитывается только при открытии файла или принудительном обновлении (F9). Если вам нужно отслеживать рабочие дни в режиме онлайн, рассмотрите использование Power Query или VBA.
5. Автоматическое обновление даты при изменении данных (событийные макросы)
Что делать, если дата должна обновляться не при открытии файла, а при изменении конкретных ячеек? Например, вы ведёте таблицу задач, и хотите, чтобы в колонке «Последнее изменение» автоматически проставлялась текущая дата при редактировании строки.
Для этого подойдёт макрос на событие Worksheet_Change:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("B2:B100") ' Диапазон, изменения в котором отслеживаем
If Not Application.Intersect(KeyCells, Target) Is Nothing Then
Target.Offset(0, 1).Value = Now ' В соседнюю ячейку вставляем дату и время
Target.Offset(0, 1).NumberFormat = "dd.mm.yyyy hh:mm"
End If
End Sub
Как это работает:
- Макрос срабатывает при любом изменении в указанном диапазоне (
B2:B100). - В соседнюю ячейку справа (
Offset(0, 1)) вставляется текущая дата и время. - Формат ячейки автоматически меняется на удобочитаемый.
⚠️ Внимание: Этот код нужно размещать в модуле конкретного листа (а не в общем модуле Module1). Для этого:
- Нажмите
Alt+F11→ найдите ваш лист в деревеVBAProject. - Дважды кликните по нему и вставьте код в открывшееся окно.
Убедиться, что включены макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы)|
Сохранить файл в формате .xlsm (с поддержкой макросов)|
Проверить, что диапазон в коде (B2:B100) соответствует вашей таблице|
Назначить макрос на кнопку или событие (если нужно)-->
6. Обновляемая дата в заголовках и колонтитулах
Если вам нужно, чтобы дата печатной формы обновлялась автоматически, добавьте её в колонтитул:
- Перейдите на вкладку
Вставка → Колонтитулы(илиРазметка страницы → Колонтитулы). - Кликните по верхнему или нижнему колонтитулу.
- В панели
Работа с колонтитулами → КонструкторнажмитеТекущая дата(вставит статическую дату) илиПоле→Date(для динамической).
⚠️ Внимание: Динамическая дата в колонтитулах обновляется только при печати или предварительном просмотре, но не при простом открытии файла. Если вам нужно, чтобы дата менялась при каждом открытии, используйте формулу в ячейке (например, =TODAY()) и настройте печать так, чтобы эта ячейка отображалась на каждом листе.
Для автоматического обновления времени печати в колонтитуле используйте поле Time. Однако учтите, что оно покажет время печати документа, а не текущее время открытия файла.
7. Распространённые ошибки и их решения
Даже с простыми функциями вроде TODAY() пользователи сталкиваются с проблемами. Вот топ-5 ошибок и как их исправить:
1. Дата не обновляется при открытии файла
- 🔹 Проверьте настройки пересчёта:
Формулы → Параметры вычислений → Автоматически. - 🔹 Если файл открыт долго, нажмите
F9для принудительного пересчёта. - 🔹 Убедитесь, что ячейка не отформатирована как текст (выделите её →
Главная → Формат → Очистить форматы).
2. Вместо даты отображается число (например, 45341)
- 🔹 Это внутренний формат хранения дат в Excel (количество дней с 1900 года).
- 🔹 Исправьте формат ячейки:
Ctrl+1 → Числовой формат → Дата.
3. Функция NOW() показывает неверное время
- 🔹 Проверьте настройки времени в системе (
Панель управления → Дата и время). - 🔹 Если файл открыт в Excel Online, время может синхронизироваться с сервером Microsoft, а не с вашим ПК.
4. Макрос не срабатывает при изменении ячеек
- 🔹 Убедитесь, что макросы разрешены (
Файл → Параметры → Центр управления безопасностью). - 🔹 Проверьте, что код размещён в модуле листа, а не в общем модуле.
- 🔹 Если диапазон в коде (
B2:B100) не совпадает с вашими данными, макрос не сработает.
5. Дата в колонтитуле не меняется
- 🔹 Колонтитулы обновляются только при печати или предварительном просмотре (
Файл → Печать). - 🔹 Для динамического отображения используйте ячейку с формулой и настройте печать через
Параметры страницы → Печатать заголовки.
FAQ: Частые вопросы об обновляемых датах в Excel
Можно ли сделать так, чтобы дата обновлялась каждую минуту, а не только при открытии файла?
Да, но для этого потребуется VBA. Используйте следующий код в модуле ThisWorkbook:
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:01:00"), "UpdateTime"
End Sub
Sub UpdateTime()
Range("A1").Value = Now ' Обновляем ячейку A1
Application.OnTime Now + TimeValue("00:01:00"), "UpdateTime" ' Запускаем снова через минуту
End Sub
⚠️ Этот метод создаёт фоновый процесс, который будет работать, даже если файл свёрнут. Чтобы остановить обновление, закройте Excel или добавьте команду отмены в код.
Почему функция TODAY() показывает вчерашнюю дату?
Это происходит, если:
- На вашем ПК установлена неверная дата (проверьте системные настройки).
- Файл открыт в режиме
Только для чтенияили защищён от изменений. - Вы используете Excel Online, где время синхронизируется с сервером Microsoft, а не с вашим устройством.
Решение: обновите системную дату или откройте файл в настольной версии Excel.
Как вставить дату, которая будет обновляться только по понедельникам?
Используйте комбинацию функций TODAY() и WEEKDAY():
=IF(WEEKDAY(TODAY())=2; TODAY(); "Не понедельник")
Где 2 — это номер дня недели для понедельника (в настройках Excel по умолчанию 1 — воскресенье, 2 — понедельник и т. д.). Чтобы изменить первый день недели, перейдите в Файл → Параметры → Дополнительно → При пересчёте книги → Первый день недели.
Можно ли сделать так, чтобы дата обновлялась при сохранении файла?
Да, с помощью макроса на событие Workbook_BeforeSave:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("Лист1").Range("A1").Value = Now
Sheets("Лист1").Range("A1").NumberFormat = "dd.mm.yyyy hh:mm"
End Sub
Этот код будет обновлять ячейку A1 на листе Лист1 при каждом сохранении файла. Не забудьте сохранить файл в формате .xlsm!
Как отобразить дату на русском языке (например, «15 мая 2026 года»)?
Используйте пользовательский формат:
- Выделите ячейку с датой.
- Нажмите
Ctrl+1→ выберитеВсе форматы. - В поле
Типвведите:д мммм гггг "года".
Для английской версии Excel используйте формат: d mmmm yyyy.