Работа с датами в Microsoft Excel — одна из самых востребованных задач, будь то ведение отчётности, планирование или аналитика. Сегодняшнее число может потребоваться для маркировки документов, расчёта сроков или создания динамических отчётов. Но как его правильно вставить, чтобы оно либо оставалось неизменным, либо обновлялось автоматически?
Многие пользователи ошибочно считают, что достаточно просто ввести дату вручную — но это приводит к проблемам при копировании формул или изменении файла. Другие используют функцию СЕГОДНЯ(), не понимая, почему дата "скачет" при каждом открытии книги. В этой статье разберём все способы вставки текущей даты — от базовых до продвинутых, с учётом нюансов статических и динамических значений.
Вы узнаете:
- 🔹 Как вставить фиксированную дату, которая не будет меняться при пересчёте
- 🔹 Почему функция
ТДАТА()возвращает ошибку в новых версиях Excel - 🔹 Как сделать так, чтобы дата обновлялась только при открытии файла, а не при каждом изменении ячейки
- 🔹 Скрытые возможности комбинаций клавиш для быстрого ввода
1. Быстрая вставка текущей даты горячими клавишами
Самый простой способ — использовать сочетания клавиш. Они работают во всех версиях Excel (включая Excel 365, Excel 2019 и Excel для Mac) и позволяют вставить дату за секунду.
Для статической даты (которая не будет обновляться):
- 🖥️
Ctrl + ;(точка с запятой) — вставит текущую дату в формате по умолчанию (например,15.05.2026) - ⌨️
Ctrl + Shift + ;— вставит текущее время
Эти значения не являются формулами — они вставляются как обычный текст и не изменятся при пересчёте книги. Это удобно для маркировки отчётов или фиксации даты создания документа.
Ограничение метода: если вы скопируете ячейку с такой датой в другую, значение останется прежним. Для динамического обновления нужны функции.
2. Функция СЕГОДНЯ(): динамическая дата, которая обновляется автоматически
Функция =СЕГОДНЯ() (или =TODAY() в английской версии) возвращает текущую дату и обновляется при каждом пересчёте листа. Это полезно для:
- 📅 Отслеживания актуальности данных (например, "истёк ли срок действия документа?")
- 📊 Автоматического расчёта разницы между датами (например,
=СЕГОДНЯ()-A1для подсчёта дней с момента события) - 🔄 Динамических отчётов, где важна текущая дата на момент просмотра
Синтаксис простой:
=СЕГОДНЯ()
Но есть нюансы:
⚠️ Внимание: Если книга открыта, дата обновляется при любом изменении на листе (даже если вы просто нажали на ячейку и нажалиEnter). Чтобы принудительно обновить все функцииСЕГОДНЯ(), нажмитеF9.
| Версия Excel | Поддерживается ли СЕГОДНЯ()? |
Особенности |
|---|---|---|
| Excel 365, Excel 2021 | ✅ Да | Обновляется при открытии файла и при пересчёте |
| Excel 2019, Excel 2016 | ✅ Да | Может тормозить при большом количестве формул |
| Excel для Mac | ✅ Да | Иногда требует ручного пересчёта (⌘ + =) |
| Excel Online | ✅ Да | Обновляется только при открытии файла |
3. ТДАТА() vs СЕГОДНЯ(): в чём разница и почему первая исчезла
В старых версиях Excel (до Excel 2007) существовала функция =ТДАТА() — аналог СЕГОДНЯ(). Сейчас она устарела и возвращает ошибку #ИМЯ?.
Причины исчезновения:
- 🔄 Дублирование функционала:
ТДАТА()иСЕГОДНЯ()делали одно и то же. - 🌍 Локализация: В английской версии всегда была только
TODAY(), аТДАТА()— рудимент русской локализации. - 📉 Оптимизация: Microsoft упростила ядро формул, убрав устаревшие синонимы.
Если в вашей книге остались формулы с ТДАТА(), замените их на СЕГОДНЯ() с помощью функции НАЙТИ и ЗАМЕНИТЬ (Ctrl + H).
Как найти все ячейки с ТДАТА() в большом файле?
Откройте Главная → Найти и выделить → Найти. В поле "Найти" введите =ТДАТА(), в "Заменить на" — =СЕГОДНЯ(). Нажмите "Заменить всё".
4. Статическая дата через формулу: как "зафиксировать" сегодняшнее число
Иногда нужно, чтобы дата вставлялась автоматически при создании строки, но не изменялась в будущем. Например, в журнале регистрации документов. Для этого используйте комбинацию функций:
=ЕСЛИ(A1="";"";СЕГОДНЯ())
Как это работает:
- Если ячейка
A1пустая, формула возвращает пустое значение. - Как только вы вводите данные в
A1, формула подставляет текущую дату. - Чтобы зафиксировать значение, скопируйте ячейку с формулой и вставьте как
Значения(Правая кнопка → Специальная вставка → Значения).
Альтернативный способ — использовать VBA-макрос, который будет вставлять дату при двойном клике на ячейку. Пример кода:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Target.Value = Date
Cancel = True
End If
End Sub
Этот код вставляет текущую дату при двойном клике на любую ячейку в столбце A.
Открыть редактор VBA (Alt + F11)|Вставить код в модуль листа|Сохранить файл как .xlsm|Включить макросы при открытии
-->
5. Форматирование даты: как изменить отображение сегодняшнего числа
По умолчанию Excel отображает дату в формате, заданном в настройках системы (например, 15.05.2026 или 15/05/2026). Но вы можете изменить его:
Способы форматирования:
- 📅 Через меню: Выделите ячейку →
Главная → Формат ячеек → Число → Дата→ выберите нужный формат. - 🖼️ Пользовательский формат: В том же окне выберите "Все форматы" и введите, например,
дд ммм гггг(будет15 мая 2026). - 📌 Формулой: Используйте
=ТЕКСТ(СЕГОДНЯ();"дд мммм гггг")для вывода15 мая 2026 года.
| Формат | Пример кода | Результат |
|---|---|---|
| День.Месяц.Год | дд.мм.гггг |
15.05.2026 |
| Месяц прописью | дд мммм гггг |
15 мая 2026 |
| День недели + дата | дддд, дд мммм |
Среда, 15 мая |
| Только год | гггг |
2026 |
Важно: Форматирование не меняет значение ячейки — только её отображение. Для расчётов Excel всегда использует внутренний формат даты (число дней с 1900 года).
6. Автоматическое обновление даты при открытии файла (без пересчёта)
Если функция СЕГОДНЯ() обновляется слишком часто (при каждом изменении на листе), а вам нужно, чтобы дата менялась только при открытии книги, используйте VBA:
Шаги:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Дважды кликните на
ThisWorkbookв дереве проекта. - Вставьте код:
Private Sub Workbook_Open()Sheets("Лист1").Range("A1").Value = Date
End Sub
- Сохраните файл как
.xlsm(с поддержкой макросов).
Теперь при каждом открытии файла в ячейке A1 на листе Лист1 будет появляться текущая дата.
⚠️ Внимание: Макросы работают только если они разрешены в настройках безопасности Excel. При открытии файла с макросами появится предупреждение — нажмите "Включить содержимое".
7. Распространённые ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при работе с датами в Excel. Разберём типичные ошибки:
- 🚫 Дата отображается как число: Это происходит, если ячейка имеет общий формат. Решение:
Ctrl + 1 → Формат ячеек → Дата. - 🔢 Функция
СЕГОДНЯ()не обновляется: Проверьте, не стоит ли в настройках книги режимРучной пересчёт(Формулы → Параметры вычислений). - ❌ Ошибка
#ИМЯ?: Опечатка в названии функции (например,СЕГОДНЯбез скобок) или использование устаревшейТДАТА(). - 📅 Некорректный регион: Если дата отображается в формате
мм/дд/ггггвместодд.мм.гггг, измените региональные настройки в панели управления Windows.
Ещё одна частая проблема — копирование формул с относительными ссылками. Например, если в A1 у вас =СЕГОДНЯ(), а вы протянули её вниз, все ячейки будут показывать одну и ту же дату. Чтобы этого избежать, используйте абсолютную ссылку: =СЕГОДНЯ()+0 (хотя в данном случае это не требуется, так как у функции нет аргументов).
8. Продвинутые приёмы: динамические диапазоны и условное форматирование
Текущую дату можно использовать не только для отображения, но и для автоматизации:
- 🎨 Условное форматирование: Подсвечивайте строки, где дата в столбце
Bстарше 30 дней:=И($B1<СЕГОДНЯ()-30;$B1<>"") - 📊 Динамические именованные диапазоны: Создайте диапазон, который автоматически расширяется при добавлении новых строк с сегодняшней датой:
=СМЕЩ(Лист1!$A$1;0;0;СЧЁТЕСЛИ(Лист1!$A:$A;СЕГОДНЯ());1) - 🔄 Power Query: При импорте данных добавьте столбец с текущей датой через
Добавить столбец → Пользовательский → DateTime.LocalNow().
Пример использования в сводной таблице:
- Добавьте в исходные данные столбец с формулой
=СЕГОДНЯ(). - Создайте сводную таблицу и добавьте этот столбец в фильтры.
- Теперь вы можете фильтровать данные по "сегодняшним" записям.
Как обновить все сводные таблицы сразу?
Нажмите Анализ → Обновить → Обновить все или используйте макрос:
Sub RefreshAllPivots()
Dim ws As Worksheet
For Each ws In Worksheets
Dim pt As PivotTable
For Each pt In ws.PivotTables
pt.RefreshTable
Next pt
Next ws
End Sub
Часто задаваемые вопросы
❓ Почему функция СЕГОДНЯ() показывает вчерашнюю дату?
Это происходит, если в настройках вашего компьютера установлена неверная дата или часовая зона. Проверьте:
- Нажмите
Win + R, введитеtimedate.cplи нажмитеEnter. - Убедитесь, что дата и время синхронизированы с интернет-сервером.
- Перезапустите Excel — функция должна обновиться.
Также проверьте, не стоит ли в Excel ручной режим пересчёта (Формулы → Параметры вычислений → Автоматически).
❓ Можно ли вставить сегодняшнюю дату без года?
Да, для этого используйте пользовательский формат:
- Выделите ячейку с датой.
- Нажмите
Ctrl + 1. - Выберите "Все форматы" и введите
дд.мм.
Или используйте формулу:
=ТЕКСТ(СЕГОДНЯ();"дд.мм")
❓ Как вставить дату и время в одну ячейку?
Используйте функцию =СЕЙЧАС() (или =NOW() в английской версии). Она возвращает текущие дату и время, например, 15.05.2026 14:30.
Чтобы отформатировать вывод, примените пользовательский формат дд.мм.гггг чч:мм.
❓ Почему при копировании формулы СЕГОДНЯ() в другую книгу дата не обновляется?
Функция СЕГОДНЯ() привязана к конкретной книге, а не к Excel в целом. При копировании в другую книгу формула сохраняется, но пересчитывается только при открытии нового файла.
Если вам нужна актуальная дата в новой книге, вставьте функцию заново или используйте Специальную вставку → Формулы.
❓ Можно ли сделать так, чтобы дата обновлялась только один раз в день?
Да, для этого нужен VBA-скрипт, который сравнивает текущую дату с датой последнего обновления. Пример:
Private Sub Worksheet_Calculate()
Static LastDate As Date
If LastDate <> Date Then
Range("A1").Value = Date
LastDate = Date
End If
End Sub
Этот код обновляет дату в A1 только если прошёл новый день.