Работа с датами в Microsoft Excel — одна из самых востребованных задач при создании отчётов, планировщиков и финансовых моделей. Часто требуется автоматически подставлять текущую дату в ячейку, чтобы документ всегда отображал актуальную информацию без ручного обновления. Но как это сделать правильно, чтобы формула работала корректно при каждом открытии файла?
Многие пользователи ошибочно вводят дату вручную или копируют её из других источников, что приводит к статичным значениям. Между тем, Excel предлагает несколько динамических способов вставить сегодняшнюю дату — от простой функции TODAY() до комбинированных формул с учётом временных зон и форматов. В этой статье разберём все методы, их плюсы и минусы, а также типичные ошибки, которые портят расчёты.
Если вам нужно не только отобразить дату, но и зафиксировать её на определённый момент (например, для архива), потребуются другие подходы. Мы покажем, как сделать так, чтобы дата обновлялась автоматически или оставалась неизменной — в зависимости от вашей задачи.
1. Базовая функция TODAY(): простой способ вставить сегодняшнюю дату
Самый распространённый метод — использование функции =TODAY(). Она возвращает текущую дату в формате, установленном в настройках вашей системы. Главное преимущество: значение обновляется каждый раз при пересчёте листа или открытии файла.
Формула не требует аргументов и работает во всех версиях Excel (включая Excel 365, Excel 2019 и более ранние). Пример:
=TODAY()
Результат будет выглядеть как 15.05.2026 (или в другом формате, если у вас иные региональные настройки). Чтобы изменить отображение, используйте форматирование ячейки (Ctrl+1 → вкладка «Число» → «Дата»).
⚠️ Внимание: Функция TODAY() не учитывает временные зоны. Если вы работаете с международными данными, дата может отличаться от локальной на ±1 день из-за разницы во времени.
Чтобы зафиксировать дату на момент ввода (например, для создания метки времени), используйте комбинацию клавиш Ctrl+; (точка с запятой). Это вставит статическое значение, которое не будет обновляться.
2. TODAY() vs NOW(): когда нужны дата и время
Если помимо даты требуется отобразить текущее время, используйте функцию =NOW(). Она возвращает дату и время в формате 15.05.2026 14:30:45. Пример:
=NOW()
Как и TODAY(), эта функция динамическая — значения обновляются при каждом изменении листа. Чтобы отобразить только время, примените пользовательский формат:
- Выделите ячейку с формулой.
- Нажмите
Ctrl+1. - Выберите формат «Время» или введите вручную
ч:мм:сс.
Разница между функциями:
- 📅
TODAY()— только дата (идеально для отчётов, где время не важно). - ⏰
NOW()— дата + время (полезно для логов или тайм-трекинга).
⚠️ Внимание: ФункцииNOW()иTODAY()могут замедлять работу больших файлов, так как пересчитываются при каждом изменении. В таких случаях используйте статические значения или отключите автоматический пересчёт вФормулы → Параметры вычислений.
3. Динамические диапазоны дат с SEQUENCE и TODAY()
Для создания автоматически обновляемых календарей или графиков полезно комбинировать TODAY() с функцией SEQUENCE() (доступна в Excel 365 и Excel 2021). Например, чтобы сгенерировать список из 7 дней, начиная с сегодняшней даты:
=SEQUENCE(7; 1; TODAY(); 1)
Расшифровка аргументов:
7— количество строк (дней).1— количество столбцов.TODAY()— стартовая дата.1— шаг (каждый следующий день).
Результат:
| Дата | Формула |
|---|---|
| 15.05.2026 | =SEQUENCE(7;1;TODAY();1) |
| 16.05.2026 | |
| 17.05.2026 | |
| ... | |
| 21.05.2026 |
Этот метод удобен для создания скользящих графиков, где оси X должны автоматически сдвигаться вместе с текущей датой.
Используйте формулу Как сделать обратный отсчёт до события?
=Дата_события - TODAY(). Например, =DATE(2026;12;31) - TODAY() вернёт количество дней до Нового года.
4. Фиксированная дата: как "заморозить" сегодняшний день
Иногда требуется вставить текущую дату один раз и зафиксировать её, чтобы она не менялась при открытии файла. Для этого есть три способа:
Способ 1. Комбинация клавиш:
- 🔹
Ctrl+;— вставляет статическую дату. - 🔹
Ctrl+Shift+;— вставляет статическое время.
Способ 2. Копирование значения:
- Введите
=TODAY()в ячейку. - Скопируйте ячейку (
Ctrl+C). - Выделите её же и выберите «Специальная вставка» → «Значения» (
Ctrl+Alt+V → В).
Способ 3. Формула с триггером (для продвинутых):
=IF(A1=""; ""; TODAY())
Здесь дата фиксируется только при вводе любого значения в ячейку A1.
⚠️ Внимание: Если вы используетеTODAY()в защищённом листе, формула перестанет обновляться после блокировки ячеек. Чтобы этого избежать, оставьте ячейку с датой незаблокированной (Главная → Формат → Защитить лист).
Ячейка не содержит формулу TODAY()|Файл не защищён от изменений|Дата отображается в нужном формате|Создана резервная копия файла-->
5. Работа с временными зонами: корректировка даты
Если ваши данные привязаны к другому часовому поясу, TODAY() может показывать неверную дату. Например, если вы в Москве (UTC+3), а отчёт нужно привязать к Нью-Йорку (UTC-4), разница составит 7 часов. Чтобы скорректировать дату, используйте формулу:
=TODAY() + (Часовая_разница/24)
Пример для Нью-Йорка (UTC-4 относительно UTC+0):
=TODAY() - (4/24)
Для автоматизации можно создать отдельную ячейку с разницей во времени и ссылаться на неё:
=TODAY() + ($B$1/24)
где B1 содержит значение -4 (для Нью-Йорка).
Альтернативный вариант — использовать Power Query для преобразования временных меток, но это требует дополнительных навыков.
6. Ошибки при работе с TODAY(): почему формула не работает
Даже простая функция TODAY() может давать сбои. Рассмотрим типичные проблемы и их решения:
1. Дата не обновляется.
- 🔴 Причина: Автоматический пересчёт отключён.
- 🟢 Решение: Перейдите в
Формулы → Параметры вычислений → Автоматически.
2. Отображается ###### вместо даты.
- 🔴 Причина: Ячейка слишком узкая или отрицательное значение даты.
- 🟢 Решение: Расширьте столбец или проверьте формулу на ошибки.
3. Дата сбивается при открытии файла на другом ПК.
- 🔴 Причина: Разные региональные настройки (например,
ММ.ДД.ГГГГvsДД.ММ.ГГГГ). - 🟢 Решение: Используйте универсальный формат
ГГГГ-ММ-ДДили функцию=TEXT(TODAY(); "yyyy-mm-dd").
4. Формула возвращает 00.01.1900.
- 🔴 Причина: Ячейка отформатирована как «Общий» или «Текст».
- 🟢 Решение: Примените формат «Дата» (
Ctrl+1).
Если проблема не решена, проверьте настройки системы:
- Откройте
Панель управления → Часы и регион → Изменение форматов даты и времени. - Убедитесь, что короткий формат даты соответствует вашим ожиданиям.
7. Продвинутые приёмы: TODAY() в условном форматировании
Функцию TODAY() можно использовать для автоматической подсветки просроченных задач. Например, чтобы выделить красным ячейки с датами, которые уже прошли:
- Выделите диапазон с датами.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите «Форматировать ячейки, которые содержат».
- Установите условие: «Значение» → «меньше» →
=TODAY(). - Задайте красный цвет заполнения.
Аналогично можно настроить уведомления о приближающихся дедлайнах. Например, чтобы выделить жёлтым задачи, которые истекают через 3 дня:
=AND(A1>TODAY(); A1<=TODAY()+3)
Для динамических дашбордов комбинируйте TODAY() с функциями EDATE() (добавляет месяцы) или WORKDAY() (учитывает только рабочие дни):
=WORKDAY(TODAY(); 5)
Эта формула вернёт дату через 5 рабочих дней, исключая выходные.
=SEQUENCE(12; 1; TODAY() - DAY(TODAY()) + 1; 31)
Она генерирует первые дни каждого месяца, начиная с текущего.-->
FAQ: Частые вопросы о датах в Excel
Можно ли вставить сегодняшнюю дату без формул?
Да, используйте комбинацию Ctrl+; для даты или Ctrl+Shift+; для времени. Эти значения статичные и не обновляются.
Почему TODAY() показывает вчерашнюю дату?
Вероятно, на вашем ПК неправильно установлены дата и время в системе. Проверьте настройки часового пояса в Windows/macOS. Также убедитесь, что в Excel включён автоматический пересчёт (Формулы → Параметры вычислений).
Как сделать так, чтобы дата обновлялась только раз в день?
Используйте макрос VBA, который будет фиксировать значение TODAY() при первом открытии файла. Пример кода:
Private Sub Workbook_Open()
Sheets("Лист1").Range("A1").Value = Date
End Sub
Этот код вставит текущую дату в ячейку A1 только один раз за сессию.
Можно ли использовать TODAY() в Google Таблицах?
Да, в Google Sheets есть аналогичная функция =TODAY(), которая работает так же, как в Excel. Однако в веб-версии дата обновляется при каждом изменении листа или открытии файла, что может чаще пересчитывать формулы.
Как вычесть из сегодняшней даты 30 дней?
Используйте формулу:
=TODAY() - 30
Для более сложных вычислений (например, минус 1 месяц) применяйте =EDATE(TODAY(); -1).