Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных, планировании и отчётности. Но что делать, если нужно автоматически подставлять текущую дату прямо в формулу, чтобы не обновлять её вручную каждый день? Например, для расчёта просроченных задолжений, актуальности цен или динамических отчётов.
Многие пользователи ошибочно пытаются вводить дату как текст (например, `"15.05.2026"`) или копируют её из другой ячейки, но это приводит к статическим значениям, которые не обновляются. На самом деле в Excel есть специальные функции, которые возвращают сегодняшнюю дату и время — и их можно интегрировать в любые вычисления. В этой статье разберём все способы вставки текущей даты в формулы, нюансы работы с динамическими и статическими значениями, а также типичные ошибки, которые портят расчёты.
1. Функция TODAY(): простой способ получить сегодняшнюю дату
Самый популярный инструмент для работы с текущей датой — функция =TODAY(). Она возвращает сегодняшнюю дату в формате, установленном в настройках вашей системы (например, 15.05.2026 или 05/15/2026). Главное преимущество: значение обновляется автоматически при каждом пересчёте листа.
Как её использовать в формуле? Например, чтобы посчитать количество дней до дедлайна в ячейке A2, напишите:
=A2 - TODAY()
Функция не требует аргументов — скобки остаются пустыми. Но есть важные нюансы:
- 🔄 Динамическое обновление: дата меняется при открытии файла или принудительном пересчёте (
F9). - ⏰ Без времени:
TODAY()возвращает только дату, без часов и минут (в отличие отNOW()). - 📅 Формат ячейки: если результат отображается как число (например,
45412), измените формат наДатачерезГлавная → Формат ячеек.
⚠️ Внимание: Если файл не открывался несколько дней, TODAY() не обновит значение ретроактивно. Дата фиксируется на момент последнего пересчёта.
Пример практического применения: расчёт возраста сотрудника по дате рождения в ячейке B2:
=DATEDIF(B2; TODAY(); "Y") & " лет, " & DATEDIF(B2; TODAY(); "YM") & " мес."
2. Функция NOW(): текущая дата + время
Если вам нужна не только дата, но и точное время, используйте функцию =NOW(). Она возвращает текущие дату и время в формате 15.05.2026 14:30:45 (в зависимости от региональных настроек). Как и TODAY(), функция не имеет аргументов и обновляется автоматически.
Пример использования: фиксация времени создания записи в журнале:
=NOW()
Ключевые отличия от TODAY():
| Параметр | TODAY() |
NOW() |
|---|---|---|
| Возвращает время | ❌ Нет | ✅ Да |
| Обновление при пересчёте | ✅ Да | ✅ Да |
| Формат по умолчанию | дд.мм.гггг |
дд.мм.гггг чч:мм:сс |
| Применение | Расчёты по датам | Логи, таймштампы |
Чтобы извлечь из NOW() только время, используйте функцию =TIME(HOUR(NOW()); MINUTE(NOW()); SECOND(NOW())).
⚠️ Внимание: Если вы копируете формулу с NOW() в другую книгу, время может сброситься на момент копирования. Чтобы избежать этого, используйте статическое значение (см. раздел 4).
3. Комбинация с другими функциями: примеры расчётов
Текущую дату часто используют в комплексе с другими функциями для динамических вычислений. Рассмотрим популярные сценарии:
3.1. Расчёт просроченных платежей
Допустим, в ячейке C2 указана дата оплаты, а в D2 нужно вывести количество просроченных дней (или 0, если оплата в срок):
=MAX(0; TODAY() - C2)
3.2. Проверка актуальности данных
Чтобы отметить строки с данными старше 30 дней (например, для архивации), используйте условное форматирование с формулой:
=TODAY() - $A2 > 30
Где A2 — ячейка с датой создания записи.
3.3. Автоматическая генерация отчётного периода
Для создания заголовка отчёта типа "Отчёт за май 2026" используйте:
="Отчёт за " & TEXT(TODAY(); "MMMM YYYY")
- 📊 Динамические диаграммы: Используйте
TODAY()в диапазонах данных, чтобы графики автоматически обновляли оси времени. - 🔍 Фильтрация: В таблицах Excel можно фильтровать записи по формуле
=TODAY() - [Дата] < 7, чтобы показать только актуальные за последнюю неделю. - 📌 Статичные отметки: Для фиксации даты создания файла комбинируйте
TODAY()сIF(см. раздел 4).
Ячейка отформатирована как "Дата"|Формула обновляется при открытии файла|Учтена разница часовых поясов (если нужно)|Проверены крайние случаи (например, 29 февраля)
-->
4. Как зафиксировать текущую дату статически
Иногда требуется однократно зафиксировать сегодняшнюю дату, чтобы она не менялась при пересчёте. Например, для лога действий или метки создания записи. Есть три способа:
4.1. Горячие клавиши
Нажмите Ctrl + ; (точка с запятой) — в ячейку вставится текущая дата как статическое значение. Для даты и времени одновременно используйте Ctrl + Shift + ;.
4.2. Преобразование формулы в значение
Если в ячейке уже есть формула с TODAY(), выполните:
- Выделите ячейку.
- Нажмите
F2(режим редактирования), затемF9(вычислить формулу). - Нажмите
Enter— формула заменится на фиксированную дату.
4.3. Формула с условием
Чтобы дата фиксировалась только при первом вводе данных в соседнюю ячейку (например, в B2), используйте:
=IF(B2<>""; IF(C2=""; TODAY(); C2); "")
Где C2 — ячейка с датой. После первого заполнения B2 дата зафиксируется.
⚠️ Внимание: Статическая дата не обновляется даже при изменении системных настроек. Если нужно синхронизировать её с новым днём, используйте динамические функции.
Почему Ctrl + ; вставляет дату в американском формате?
Если ваш Excel настроен на английскую локаль (например, mm/dd/yyyy), дата будет вставлена в формате США. Чтобы исправить это, измените региональные настройки в Файл → Параметры → Язык → Региональные параметры или отформатируйте ячейку вручную через Главная → Формат → Формат ячеек → Дата.
5. Типичные ошибки и как их исправить
Даже опытные пользователи сталкиваются с проблемами при работе с текущей датой в формулах. Разберём самые распространённые:
5.1. Формула возвращает число вместо даты
Если вместо 15.05.2026 вы видите 45412, это значит, что ячейка имеет общий формат. Исправьте его:
- Выделите ячейку.
- Нажмите
Ctrl + 1(или правая кнопка →Формат ячеек). - Выберите категорию
Датаи нужный формат.
5.2. Дата не обновляется
Причины и решения:
- 🔄 Ручной режим пересчёта: Переключите на автоматический в
Формулы → Вычисления → Автоматически. - 📥 Файл не сохранён: Excel обновляет
TODAY()только при открытии или сохранении. - 🖥️ Макросы блокируют обновление: Отключите макросы или проверьте код на наличие
Application.Calculation = xlManual.
5.3. Ошибка #VALUE! при вычитании дат
Если формула типа =TODAY() - "15.05.2026" возвращает ошибку, причина в том, что текстовая дата не распознаётся как дата. Преобразуйте её с помощью =ДАТАЗНАЧ("15.05.2026") или введите дату в отдельную ячейку.
5.4. Разница во времени из-за часовых поясов
Функции TODAY() и NOW() используют системное время компьютера, а не сервера или облачного хранилища. Если файл открыт в разных часовых поясах, даты могут отличаться. Для критичных расчётов фиксируйте дату статически или используйте =TODAY() + (Часовой пояс / 24).
6. Альтернативные способы: VBA и Power Query
Для продвинутых пользователей, которым нужна гибкость beyond стандартных функций, подойдут:
6.1. VBA-макрос для вставки даты
Чтобы вставить текущую дату по нажатию кнопки, создайте макрос:
Sub InsertCurrentDate()
ActiveCell.Value = Date
ActiveCell.NumberFormat = "dd.mm.yyyy"
End Sub
Назначьте его на кнопку через Разработчик → Вставить → Кнопка.
6.2. Power Query для динамических дат
Если вы загружаете данные из внешних источников, добавьте столбец с текущей датой в Power Query:
- Выделите таблицу →
Данные → Из таблицы/диапазона. - В редакторе запросов выберите
Добавить столбец → Пользовательский. - Введите формулу
= DateTime.LocalNow().
6.3. Динамические массивы (Excel 365)
В новых версиях Excel можно создать "плавающий" диапазон дат:
=SEQUENCE(7; ; TODAY() - 6)
Эта формула вернёт 7 дней, начиная с сегодняшней даты (включая её).
7. Сравнение методов: какой выбрать?
Выбор способа вставки текущей даты зависит от задачи:
| Метод | Динамический? | Включает время? | Когда использовать |
|---|---|---|---|
TODAY() |
✅ Да | ❌ Нет | Расчёты по датам, дедлайны |
NOW() |
✅ Да | ✅ Да | Логи, таймштампы |
Ctrl + ; |
❌ Нет | ❌ Нет | Статические метки, журналы |
| VBA-макрос | ⚠️ Настраивается | ⚠️ Настраивается | Автоматизация, сложная логика |
| Power Query | ✅ Да | ✅ Да | Импорт данных, ETL-процессы |
Для большинства задач хватит TODAY() или NOW(). Если нужна статичная дата — используйте горячие клавиши. Для сложных сценариев (например, еженедельных отчётов с автоматической рассылкой) подключайте VBA или Power Automate.
FAQ: Ответы на частые вопросы
Можно ли вставить текущую дату без формул?
Да, используйте горячие клавиши:
Ctrl + ;— только дата.Ctrl + Shift + ;— дата и время.
Эти значения статичные и не обновляются.
Почему TODAY() показывает вчерашнюю дату?
Вероятные причины:
- Файл не открывался сегодня (дата обновляется при открытии или пересчёте).
- В настройках Excel установлен ручной режим пересчёта (
Формулы → Вычисления → Вручную). - Системная дата на компьютере неверная.
Как сделать, чтобы дата обновлялась каждый час?
Стандартные функции TODAY()/NOW() обновляются только при пересчёте листа. Для часового обновления:
- Используйте VBA-макрос с таймером (
Application.OnTime). - Или настройте автоматическое сохранение файла каждый час (например, через Power Automate).
Пример макроса:
Sub AutoUpdate()
Range("A1").Value = Now
Application.OnTime Now + TimeValue("01:00:00"), "AutoUpdate"
End Sub
Можно ли использовать TODAY() в условном форматировании?
Да, например, чтобы выделить просроченные задачи (даты в столбце A):
- Выделите диапазон.
- Перейдите в
Главная → Условное форматирование → Создать правило → Использовать формулу. - Введите
=TODAY()-A1>0и задайте формат (например, красный текст).
Как вставить текущую дату в заголовок листа?
Заголовок листа не поддерживает формулы, но можно обойти это ограничение:
- В ячейке (например,
A1) разместите формулу=TODAY(). - Используйте VBA, чтобы скопировать значение в заголовок:
Sub UpdateSheetName()ActiveSheet.Name = "Отчёт " & Format(Date, "dd.mm.yyyy")
End Sub
⚠️ Внимание: Имена листов не могут содержать символы/ \ * ? : [ ], поэтому используйте формат без разделителей (например,"ddmmyyyy").