Как вставить текущую дату в формулу Excel: все способы с примерами

Работа с датами в 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") & " мес."
📊 Как часто вы используете функцию TODAY() в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда не слышал о ней

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(), выполните:

  1. Выделите ячейку.
  2. Нажмите F2 (режим редактирования), затем F9 (вычислить формулу).
  3. Нажмите Enter — формула заменится на фиксированную дату.

4.3. Формула с условием

Чтобы дата фиксировалась только при первом вводе данных в соседнюю ячейку (например, в B2), используйте:

=IF(B2<>""; IF(C2=""; TODAY(); C2); "")

Где C2 — ячейка с датой. После первого заполнения B2 дата зафиксируется.

⚠️ Внимание: Статическая дата не обновляется даже при изменении системных настроек. Если нужно синхронизировать её с новым днём, используйте динамические функции.
Почему Ctrl + ; вставляет дату в американском формате?

Если ваш Excel настроен на английскую локаль (например, mm/dd/yyyy), дата будет вставлена в формате США. Чтобы исправить это, измените региональные настройки в Файл → Параметры → Язык → Региональные параметры или отформатируйте ячейку вручную через Главная → Формат → Формат ячеек → Дата.

5. Типичные ошибки и как их исправить

Даже опытные пользователи сталкиваются с проблемами при работе с текущей датой в формулах. Разберём самые распространённые:

5.1. Формула возвращает число вместо даты

Если вместо 15.05.2026 вы видите 45412, это значит, что ячейка имеет общий формат. Исправьте его:

  1. Выделите ячейку.
  2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Дата и нужный формат.

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:

  1. Выделите таблицу → Данные → Из таблицы/диапазона.
  2. В редакторе запросов выберите Добавить столбец → Пользовательский.
  3. Введите формулу = 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() показывает вчерашнюю дату?

Вероятные причины:

  1. Файл не открывался сегодня (дата обновляется при открытии или пересчёте).
  2. В настройках Excel установлен ручной режим пересчёта (Формулы → Вычисления → Вручную).
  3. Системная дата на компьютере неверная.

Как сделать, чтобы дата обновлялась каждый час?

Стандартные функции TODAY()/NOW() обновляются только при пересчёте листа. Для часового обновления:

  1. Используйте VBA-макрос с таймером (Application.OnTime).
  2. Или настройте автоматическое сохранение файла каждый час (например, через Power Automate).

Пример макроса:

Sub AutoUpdate()

Range("A1").Value = Now

Application.OnTime Now + TimeValue("01:00:00"), "AutoUpdate"

End Sub

Можно ли использовать TODAY() в условном форматировании?

Да, например, чтобы выделить просроченные задачи (даты в столбце A):

  1. Выделите диапазон.
  2. Перейдите в Главная → Условное форматирование → Создать правило → Использовать формулу.
  3. Введите =TODAY()-A1>0 и задайте формат (например, красный текст).

Как вставить текущую дату в заголовок листа?

Заголовок листа не поддерживает формулы, но можно обойти это ограничение:

  1. В ячейке (например, A1) разместите формулу =TODAY().
  2. Используйте VBA, чтобы скопировать значение в заголовок:
    Sub UpdateSheetName()
    

    ActiveSheet.Name = "Отчёт " & Format(Date, "dd.mm.yyyy")

    End Sub

⚠️ Внимание: Имена листов не могут содержать символы / \ * ? : [ ], поэтому используйте формат без разделителей (например, "ddmmyyyy").