Функция =ТДАТА() (или =TODAY() в английской версии) — одна из самых востребованных в Microsoft Excel для работы с датами. Она автоматически подставляет текущую дату и обновляется при каждом пересчёте листа. Но как её правильно использовать, чтобы избежать типичных ошибок? И почему иногда вместо даты появляется странный числовой код?
В этой статье разберём не только базовый синтаксис, но и продвинутые приёмы: как зафиксировать дату, чтобы она не менялась, как вычесть из неё дни для расчёта дедлайнов, и почему в некоторых случаях лучше использовать =СЕГОДНЯ() (аналог для Google Таблиц). Также вы узнаете, как обойти ограничения функции при работе с закрытыми книгами и макросами.
Даже если вы новичок, после прочтения сможете уверенно применять ТДАТА для автообновляемых отчётов, календарей и напоминаний. А опытные пользователи найдут здесь редкие лайфхаки — например, как заставить формулу работать в Power Query или связать её с VBA.
1. Базовый синтаксис: как вставить формулу ТДАТА в Excel
Формула =ТДАТА() не требует аргументов — она просто возвращает текущую дату в формате, установленном в настройках вашей системы. Чтобы её вставить:
1. Выделите ячейку, где должна отображаться дата.
2. Введите знак равно (=) и начинайте набирать ТДАТА — Excel подскажет функцию в выпадающем списке.
3. Нажмите Tab или Enter, чтобы подтвердить ввод.
Готово! Теперь в ячейке будет отображаться сегодняшняя дата, например, 15.05.2026. Но есть нюанс: если вы откроете файл завтра, дата автоматически обновится. Это поведение нельзя отключить через настройки функции — только обходными путями (о них расскажем ниже).
Важно: Формула возвращает только дату, без времени. Если вам нужно текущее время, используйте =СЕЙЧАС() (=NOW()).
2. Почему вместо даты отображается число (например, 45456)?
Это одна из самых распространённых проблем. Дело в том, что Excel хранит даты в виде последовательных чисел, где 1 соответствует 1 января 1900 года. Чтобы исправить отображение:
- 📅 Форматируйте ячейку как дату: Выделите ячейку → правая кнопка →
Формат ячеек→ категорияДата→ выберите нужный формат (например,14.03.2001). - 🔢 Проверьте системные настройки: Если в Windows установлен неверный региональный формат (например, английский вместо русского), Excel может отображать дату в формате
MM/DD/YYYY. - 📊 Используйте функцию ТЕКСТ: Оберните
ТДАТАв=ТЕКСТ(ТДАТА();"дд.мм.гггг"), чтобы принудительно задать формат.
⚠️ Внимание: Если после форматирования дата всё равно отображается как число, проверьте, не установлен ли в ячейке текстовый формат. В этом случае Excel воспринимает результат формулы как текст, а не как дату.
Для быстрой проверки: введите в пустую ячейку =ТДАТА()+1. Если результат — завтрашняя дата, значит, функция работает корректно, а проблема в формате отображения.
3. Как зафиксировать сегодняшнюю дату, чтобы она не менялась
По умолчанию ТДАТА() динамическая — она обновляется при каждом открытии файла или пересчёте формул. Но иногда нужно сохранить статическую дату (например, дату создания отчёта). Есть три способа:
Способ 1. Преобразовать формулу в значение
- Введите в ячейку
=ТДАТА(). - Нажмите
F9, чтобы Excel рассчитал формулу и отобразил текущую дату. - Скопируйте ячейку (
Ctrl+C), затем выделите её же и выполнитеСпециальная вставка → Значения(Ctrl+Alt+V → В).
Способ 2. Использовать комбинацию клавиш
Выделите ячейку с формулой и нажмите Ctrl+; (точка с запятой) — Excel вставит текущую дату как статическое значение.
Способ 3. VBA-макрос для автоматической вставки
Если вам нужно, чтобы при открытии файла в определённую ячейку вставлялась текущая дата (но не обновлялась позже), используйте этот код:
Private Sub Workbook_Open()
Sheets("Лист1").Range("A1").Value = Date
End Sub
☑️ Фиксация даты в Excel
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.
Можно ли использовать ТДАТА() в условном форматировании?
Да! Например, чтобы выделить красным ячейки с просроченными датами:
- Выделите диапазон с датами.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу...и введите=A1(где A1— первая ячейка диапазона). - Задайте формат (например, красный фон) и нажмите
ОК.
Теперь все даты раньше сегодняшней будут подсвечены.
Как вставить текущую дату в заголовок листа?
Прямо в название листа формулу вставить нельзя, но можно обойти это ограничение:
- Создайте ячейку с
=ТДАТА()и отформатируйте её как дату. - Используйте
VBA, чтобы скопировать значение в название листа:Sub RenameSheet()Dim ws As Worksheet
Set ws = ActiveSheet
ws.Name = Format(Date, "dd.mm.yyyy")
End Sub
- Запустите макрос — лист будет переименован в текущую дату.
/:*?[], поэтому формат даты должен быть без разделителей (например, 15052026).