Формула «Сегодня» в Excel: как вставить =ТДАТА() и настроить динамическую дату

Функция =ТДАТА() (или =TODAY() в английской версии) — одна из самых востребованных в Microsoft Excel для работы с датами. Она автоматически подставляет текущую дату и обновляется при каждом пересчёте листа. Но как её правильно использовать, чтобы избежать типичных ошибок? И почему иногда вместо даты появляется странный числовой код?

В этой статье разберём не только базовый синтаксис, но и продвинутые приёмы: как зафиксировать дату, чтобы она не менялась, как вычесть из неё дни для расчёта дедлайнов, и почему в некоторых случаях лучше использовать =СЕГОДНЯ() (аналог для Google Таблиц). Также вы узнаете, как обойти ограничения функции при работе с закрытыми книгами и макросами.

Даже если вы новичок, после прочтения сможете уверенно применять ТДАТА для автообновляемых отчётов, календарей и напоминаний. А опытные пользователи найдут здесь редкие лайфхаки — например, как заставить формулу работать в Power Query или связать её с VBA.

1. Базовый синтаксис: как вставить формулу ТДАТА в Excel

Формула =ТДАТА() не требует аргументов — она просто возвращает текущую дату в формате, установленном в настройках вашей системы. Чтобы её вставить:

1. Выделите ячейку, где должна отображаться дата.

2. Введите знак равно (=) и начинайте набирать ТДАТА — Excel подскажет функцию в выпадающем списке.

3. Нажмите Tab или Enter, чтобы подтвердить ввод.

Готово! Теперь в ячейке будет отображаться сегодняшняя дата, например, 15.05.2026. Но есть нюанс: если вы откроете файл завтра, дата автоматически обновится. Это поведение нельзя отключить через настройки функции — только обходными путями (о них расскажем ниже).

📊 Как часто вы используете функцию ТДАТА() в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда не пользовался

Важно: Формула возвращает только дату, без времени. Если вам нужно текущее время, используйте =СЕЙЧАС() (=NOW()).

2. Почему вместо даты отображается число (например, 45456)?

Это одна из самых распространённых проблем. Дело в том, что Excel хранит даты в виде последовательных чисел, где 1 соответствует 1 января 1900 года. Чтобы исправить отображение:

  • 📅 Форматируйте ячейку как дату: Выделите ячейку → правая кнопка → Формат ячеек → категория Дата → выберите нужный формат (например, 14.03.2001).
  • 🔢 Проверьте системные настройки: Если в Windows установлен неверный региональный формат (например, английский вместо русского), Excel может отображать дату в формате MM/DD/YYYY.
  • 📊 Используйте функцию ТЕКСТ: Оберните ТДАТА в =ТЕКСТ(ТДАТА();"дд.мм.гггг"), чтобы принудительно задать формат.
⚠️ Внимание: Если после форматирования дата всё равно отображается как число, проверьте, не установлен ли в ячейке текстовый формат. В этом случае Excel воспринимает результат формулы как текст, а не как дату.

Для быстрой проверки: введите в пустую ячейку =ТДАТА()+1. Если результат — завтрашняя дата, значит, функция работает корректно, а проблема в формате отображения.

3. Как зафиксировать сегодняшнюю дату, чтобы она не менялась

По умолчанию ТДАТА() динамическая — она обновляется при каждом открытии файла или пересчёте формул. Но иногда нужно сохранить статическую дату (например, дату создания отчёта). Есть три способа:

Способ 1. Преобразовать формулу в значение

  1. Введите в ячейку =ТДАТА().
  2. Нажмите F9, чтобы Excel рассчитал формулу и отобразил текущую дату.
  3. Скопируйте ячейку (Ctrl+C), затем выделите её же и выполните Специальная вставка → Значения (Ctrl+Alt+V → В).

Способ 2. Использовать комбинацию клавиш

Выделите ячейку с формулой и нажмите Ctrl+; (точка с запятой) — Excel вставит текущую дату как статическое значение.

Способ 3. VBA-макрос для автоматической вставки

Если вам нужно, чтобы при открытии файла в определённую ячейку вставлялась текущая дата (но не обновлялась позже), используйте этот код:

Private Sub Workbook_Open()

Sheets("Лист1").Range("A1").Value = Date

End Sub

☑️ Фиксация даты в Excel

Выполнено: 0 / 5

4. Продвинутые примеры: расчёты с использованием ТДАТА

Функция ТДАТА() часто применяется в комбинации с другими формулами для автоматизации расчётов. Вот несколько полезных примеров:

Задача Формула Пример результата
Дней до конца месяца =ДЕНЬ(КОНМЕСЯЦА(ТДАТА();0))-ДЕНЬ(ТДАТА()) Если сегодня 15 мая, результат — 16
Дата через 30 дней =ТДАТА()+30 Если сегодня 15.05.2026, результат — 14.06.2026
Проверка просрочки (истёк ли дедлайн) =ЕСЛИ(ТДАТА()>B2;"Просрочено";"В срок"), где B2 — ячейка с дедлайном Если в B2 дата 10.05.2026, результат — "Просрочено"
Возраст в годах =ЦЕЛОЕ((ТДАТА()-B2)/365), где B2 — дата рождения Если в B2 дата 15.05.1990, результат — 34

Критичный нюанс: При вычитании дат Excel возвращает результат в днях, но если вы делите на 365 для расчёта лет, учитывайте, что функция не учитывает високосные годы. Для точного расчёта возраста лучше использовать =РАЗНДАТ().

Пример с РАЗНДАТ:

=РАЗНДАТ(B2;ТДАТА();"y")

где B2 — дата рождения, а "y" — код для возврата полных лет.

5. ТДАТА vs СЕГОДНЯ: в чём разница для Google Таблиц?

В Google Sheets аналогичная функция называется =СЕГОДНЯ() (или =TODAY() в английской версии). Она работает почти идентично, но есть ключевые отличия:

  • 🔄 Обновление: В Google Таблицах функция пересчитывается при каждом изменении листа или каждые 30 минут (даже если файл не открыт). В Excel обновление происходит только при открытии файла или принудительном пересчёте (F9).
  • 📱 Мобильная версия: В приложении Google Sheets на смартфоне СЕГОДНЯ() может обновляться реже из-за оптимизации трафика.
  • 🔗 Совместный доступ: Если несколько пользователей одновременно редактируют таблицу, дата может "подвисать" на несколько секунд из-за задержки синхронизации.

Чтобы зафиксировать дату в Google Таблицах, используйте тот же приём: введите =СЕГОДНЯ(), затем скопируйте ячейку и вставьте как значение (Правка → Специальная вставка → Только значения).

⚠️ Внимание: В Google Таблицах нет аналога функции РАЗНДАТ из Excel. Для расчёта разницы между датами используйте:
=DATEDIF(B2;СЕГОДНЯ();"y")

где B2 — начальная дата, а "y" — единицы измерения (годы).

6. Ошибки и решения: почему ТДАТА не работает?

Даже простая функция может давать сбои. Рассмотрим типичные ошибки и способы их исправления:

  • #ИМЯ?: Ошибка появляется, если вы опечатались в названии функции (например, ввели =ТДАТ без скобок). Проверьте синтаксис.
  • #ЗНАЧ!: Возникает, если вы пытаетесь использовать ТДАТА как аргумент функции, которая ожидает число, а не дату. Например, =КОРЕНЬ(ТДАТА()) вернёт ошибку.
  • Дата не обновляется: Проверьте, не установлен ли в настройках Excel режим ручного пересчёта (Формулы → Параметры вычислений).
  • Неверный формат: Если дата отображается как 45456.12345, значит, ячейка имеет общий формат. Измените его на Дата.

Редкий случай: если ТДАТА() возвращает дату на день раньше или позже, проверьте настройки часового пояса в Windows. Excel берёт дату из системных часов, и если они сбиты, функция тоже будет ошибаться.

Что делать, если ТДАТА() сбивается при открытии файла на другом компьютере?

Это происходит из-за разницы в региональных настройках. Например, если файл создан в России (формат даты дд.мм.гггг), а открыт в США (формат мм/дд/гггг), Excel может интерпретировать дату неверно. Решение: используйте функцию =ТЕКСТ(ТДАТА();"дд.мм.гггг"), чтобы принудительно задать формат.

7. Альтернативы ТДАТА: когда её лучше не использовать

Функция ТДАТА() удобна, но не универсальна. В некоторых случаях лучше применять другие подходы:

  • 📅 Для статических отчётов: Если вам нужна дата создания документа, которая не должна меняться, используйте Ctrl+; (вставка текущей даты как текста).
  • ⏱️ Для времени: Если важно не только число, но и часы/минуты, замените ТДАТА() на =СЕЙЧАС().
  • 📊 В сводных таблицах: ТДАТА() не обновляется в сводных таблицах автоматически. Используйте Power Query или VBA для динамических дат.
  • 🔄 В закрытых книгах: Если файл открыт в режиме "только для чтения" или как вложение в письме, ТДАТА() может не обновляться. В этом случае применяйте макросы.

Пример макроса для вставки текущей даты в закрытую книгу:

Sub InsertCurrentDate()

Dim ws As Worksheet

Set ws = ThisWorkbook.Sheets("Лист1")

ws.Range("A1").Value = Date

ThisWorkbook.Save

End Sub

Чтобы макрос работал, сохраните файл с расширением .xlsm (с поддержкой макросов) и настройте автоматический запуск при открытии.

FAQ: Частые вопросы о функции ТДАТА

Можно ли в ТДАТА() указать другой часовой пояс?

Нет, функция ТДАТА() всегда берёт дату из системных часов компьютера. Если вам нужно учитывать другой часовой пояс, используйте комбинацию с =СЕЙЧАС()+ВРЕМЯ(часы;минуты;0), где часы — разница с вашим поясом. Например, для московского времени в файле, созданном в Нью-Йорке: =ТДАТА()+ВРЕМЯ(8;0;0).

Почему ТДАТА() показывает вчерашнюю дату?

Скорее всего, на вашем компьютере установлено неправильное время или дата. Проверьте настройки Windows (Параметры → Время и язык → Дата и время). Также причиной может быть ручной режим пересчёта формул в Excel — включите автоматический режим (Формулы → Параметры вычислений → Автоматически).

Как сделать, чтобы ТДАТА() обновлялась каждую минуту?

Excel не поддерживает обновление формул по таймеру, но можно эмулировать это поведение с помощью VBA. Вставьте этот код в модуль:

Sub AutoUpdate()

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

ThisWorkbook.RefreshAll

End Sub

Затем запустите макрос AutoUpdate один раз — он будет обновлять все формулы (включая ТДАТА()) каждую минуту. Не забудьте сохранить файл как .xlsm.

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

Да! Например, чтобы выделить красным ячейки с просроченными датами:

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу... и введите =A1 (где A1 — первая ячейка диапазона).
  4. Задайте формат (например, красный фон) и нажмите ОК.

Теперь все даты раньше сегодняшней будут подсвечены.

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

Прямо в название листа формулу вставить нельзя, но можно обойти это ограничение:

  1. Создайте ячейку с =ТДАТА() и отформатируйте её как дату.
  2. Используйте VBA, чтобы скопировать значение в название листа:
    Sub RenameSheet()
    

    Dim ws As Worksheet

    Set ws = ActiveSheet

    ws.Name = Format(Date, "dd.mm.yyyy")

    End Sub

  3. Запустите макрос — лист будет переименован в текущую дату.
Ограничение: Имена листов не могут содержать символы /:*?[], поэтому формат даты должен быть без разделителей (например, 15052026).