Работа с датами в Microsoft Excel — одна из самых востребованных задач. Нужно ли вам проставить текущую дату в отчёте, зафиксировать момент создания документа или автоматически обновлять временные метки — вариантов реализации масса. Но как выбрать оптимальный? Одни пользователи годами вводят дату вручную, другие используют формулы, не подозревая об их нюансах.
В этой статье разберём все возможные способы проставления текущей даты — от элементарных до продвинутых. Вы узнаете, как сделать дату статической (неизменяемой) или динамической (обновляемой при каждом открытии файла), как избежать ошибок при копировании формул и почему иногда СЕГОДНЯ() показывает вчерашнюю дату. А ещё — лайфхаки для работы с датами в больших таблицах и макросах.
Если вы никогда не работали с функциями даты в Excel, начните с первых двух разделов. Опытным пользователям будут полезны разделы про условное форматирование по дате и автоматизацию через VBA. Готовы? Тогда приступим!
1. Горячие клавиши: самый быстрый способ вставить сегодняшнюю дату
Не хотите запоминать формулы или копаться в меню? Тогда этот метод для вас. В Excel есть встроенные комбинации клавиш, которые мгновенно вставляют текущую дату — и она останется неизменной (статической), даже если вы откроете файл через год.
Используйте:
- 🔹
Ctrl + ;— вставляет сегодняшнюю дату в формате по умолчанию (например,15.05.2026) - 🔹
Ctrl + Shift + ;— вставляет текущее время (например,14:30:45)
Преимущество метода: дата вставляется как значение, а не формула. Это значит, что её можно копировать, фильтровать и использовать в вычислениях без риска изменения. Например, если вы создаёте журнал звонков или регистрируете заказы, такой способ гарантирует, что дата создания записи останется оригинальной.
⚠️ Внимание: Если после нажатияCtrl + ;в ячейке появляется число вроде45412, значит, у вас включён формат Общий. Чтобы исправить, выделите ячейку и выберите форматДатана вкладкеГлавная.
А что если нужно вставить дату и время одновременно? К сожалению, стандартных горячих клавиш для этого нет, но можно обойти ограничение:
- Нажмите
Ctrl + ;(дата) - Поставьте пробел
- Нажмите
Ctrl + Shift + ;(время)
Получится что-то вроде 15.05.2026 14:30. Чтобы Excel воспринимал это как единое значение даты+времени, примените формат Дата с типом 14.03.2012 13:30.
2. Функция СЕГОДНЯ(): динамическая дата, которая обновляется автоматически
Если вам нужна дата, которая будет всегда актуальной (например, для расчёта просроченных задолжений или текущего возраста), используйте функцию =СЕГОДНЯ(). Она не имеет аргументов и возвращает сегодняшнюю дату, обновляясь при каждом пересчёте листа или открытии файла.
Примеры применения:
- 📅
=СЕГОДНЯ()— текущая дата (например,15.05.2026) - 🕒
=СЕГОДНЯ()+1— завтрашняя дата - 📊
=СЕГОДНЯ()-A1— разница в днях между сегодняшней датой и датой в ячейкеA1
Главный плюс функции — автоматическое обновление без ручного вмешательства. Минус: если вы скопируете ячейку с СЕГОДНЯ() в другой файл, дата обновится на текущую, а не сохранит оригинальное значение.
⚠️ Внимание: ФункцияСЕГОДНЯ()зависит от системных настроек даты и времени вашего компьютера. Если они сбиты, Excel покажет неверную дату. Проверьте настройки в Панели управления Windows (разделДата и время).
Чтобы отключить автоматическое обновление даты (например, для фиксации отчётной даты), скопируйте ячейку с СЕГОДНЯ(), затем выполните Правка → Специальная вставка → Значения. Так формула заменится на статическое значение.
Введите в ячейку =СЕГОДНЯ()
Убедитесь, что формат ячейки — Дата
Сохраните файл и закройте его
Откройте файл снова — дата должна обновиться на текущую-->
3. Функция NOW(): текущая дата + время в одной ячейке
Если СЕГОДНЯ() возвращает только дату, то её "старшая сестра" — функция =NOW() (или =ТДАТА() в русской версии) — выдаёт ещё и время. Синтаксис аналогичный: без аргументов, обновляется автоматически.
Примеры:
- 🕰️
=NOW()— дата и время (15.05.2026 14:30:45) - 📅
=ЦЕЛОЕ(NOW())— только дата (аналогСЕГОДНЯ()) - ⏱️
=NOW()-ЦЕЛОЕ(NOW())— только время
Функция полезна для логов, где важно фиксировать точное время действий. Например, в журнале технической поддержки можно автоматически проставлять метку создания заявки:
=ТЕКСТ(NOW(); "дд.мм.гггг чч:мм")
Здесь ТЕКСТ преобразует дату в строку с нужным форматом, чтобы избежать проблем с отображением.
Но будьте осторожны: NOW() обновляется при любом изменении на листе, даже если вы редактируете другую ячейку. Это может создавать лишнюю нагрузку на файл. Для оптимизации:
- 🔄 Используйте
NOW()только там, где действительно нужно текущее время. - 📉 Для больших таблиц отключите автоматический пересчёт:
Формулы → Вычисления → Вручную.
4. Статическая дата через VBA: для продвинутых пользователей
Если вам нужно вставлять текущую дату в сотни ячеек или по определённым условиям (например, только в пустые строки), на помощь придёт Visual Basic for Applications (VBA). Этот метод подходит для автоматизации рутинных задач.
Пример макроса, который вставляет сегодняшнюю дату в выделенные ячейки:
Sub InsertStaticDate()
For Each cell In Selection
If IsEmpty(cell) Then
cell.Value = Date
cell.NumberFormat = "dd.mm.yyyy"
End If
Next cell
End Sub
Как это работает:
- Выделите диапазон ячеек, куда нужно вставить дату.
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код выше в новый модуль (
Insert → Module). - Запустите макрос клавишей
F5.
Преимущества VBA:
- 🤖 Автоматизация массовых операций (например, проставление даты в 1000 строках).
- 🎯 Гибкость: можно добавить условия (например, вставлять дату только если в соседней ячейке есть текст).
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.
Как защитить макрос от случайных изменений?
Чтобы другие пользователи не изменили код VBA, установите пароль на проект:
1. В редакторе VBA выберите Tools → VBAProject Properties.
2. Перейдите на вкладку Protection.
3. Установите флажок Lock project for viewing и введите пароль.
4. Сохраните файл.
Теперь без пароля код будет недоступен для просмотра и редактирования.
5. Условное форматирование по дате: визуализация актуальности данных
Текущую дату можно использовать не только для записей, но и для визуального контроля. Например, выделить красным просроченные задачи или зелёным — актуальные. Для этого подходит инструмент Условное форматирование.
Пример: выделим ячейки с датами, которые старше сегодняшней (просроченные):
- Выделите диапазон с датами (например,
A1:A100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=A1<СЕГОДНЯ(). - Задайте формат (например, красный текст на жёлтом фоне).
Аналогично можно выделять:
- 🟢 Даты в пределах 7 дней:
=И(A1>=СЕГОДНЯ(); A1<=СЕГОДНЯ()+7) - 🟡 Даты старше 30 дней:
=A1<СЕГОДНЯ()-30 - 🔴 Пустые ячейки в колонке с датами:
=A1=""
Совет: для динамических диапазонов используйте структурированные ссылки. Например, если ваши даты в таблице Excel с названием Таблица1 и столбце Срок, формула будет:
=[@Срок]<СЕГОДНЯ()
| Формула условного форматирования | Что выделяет | Пример отображения |
|---|---|---|
=A1=СЕГОДНЯ() |
Ячейки с сегодняшней датой | 🟢 Зелёный фон |
=A1>СЕГОДНЯ()+3 |
Даты позже чем через 3 дня | 🔵 Синий текст |
=И(A1<>""; A1<СЕГОДНЯ()) |
Просроченные непустые даты | 🔴 Красная заливка |
=МЕСЯЦ(A1)=МЕСЯЦ(СЕГОДНЯ()) |
Даты текущего месяца | 🟡 Жёлтый шрифт |
6. Ошибки при работе с датами и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот самые распространённые ошибки и их решения:
1. Дата отображается как число (например, 45412)
Причина: ячейка имеет формат Общий или Числовой. Решение:
- Выделите ячейку →
Главная → Формат → Формат ячеек → Дата. - Или используйте комбинацию
Ctrl + 1(открывает окно формата).
2. Функция СЕГОДНЯ() не обновляется
Причины и решения:
- 🔄 Режим вычислений установлен в
Вручную: перейдите на вкладкуФормулы → Вычисления → Автоматически. - 📥 Файл не сохранялся после изменений: сохраните и переоткройте его.
- 🖥️ Сбились системные настройки даты: проверьте их в Панели управления.
3. Ошибка #ЗНАЧ! при вычитании дат
Причина: Excel воспринимает ячейку как текст, а не дату. Решение:
- Проверьте формат ячейки (должен быть
Дата). - Используйте функцию
ДАТАЗНАЧ()для преобразования текста в дату:=ДАТАЗНАЧ(A1).
4. Копирование формулы СЕГОДНЯ() даёт одинаковые значения
Это не ошибка, а особенность работы функции. Если нужно зафиксировать дату на момент копирования, используйте Специальную вставку → Значения.
⚠️ Внимание: Если вы импортируете даты из внешних источников (например, CSV или SQL), Excel может распознать их как текст. Чтобы исправить, используйте формулу=ДАТАЗНАЧ(ПОДСТАВИТЬ(A1; "."; "/"))(замените точку на косую черту, если формат датыдд/мм/гггг).
7. Продвинутые приёмы: дата в заголовках, динамические названия и не только
Текущую дату можно использовать не только в ячейках, но и для динамических элементов Excel. Вот несколько креативных способов:
1. Автоматическое обновление даты в заголовках страницы
Если вам нужно, чтобы дата печаталась в колонтитулах каждого листа:
- Перейдите на вкладку
Вставка → Колонтитулы. - Кликните на область заголовка или подвала.
- Введите текст, например:
Отчёт от &[Date]. - Закройте режим редактирования колонтитулов.
Теперь при печати в каждом листе будет текущая дата.
2. Динамическое название листа с датой
Чтобы имя листа обновлялось автоматически (например, Май_2026), используйте VBA:
Sub RenameSheetWithDate()
ActiveSheet.Name = "Отчёт_" & Format(Date, "mm.yyyy")
End Sub
Запускайте макрос каждый месяц, и имя листа будет актуальным.
3. Дата в имени файла при сохранении
Чтобы при сохранении файла его имя автоматически дополнялось датой, используйте этот макрос:
Sub SaveWithDate()
Dim fileName As String
fileName = "Отчёт_" & Format(Date, "dd.mm.yyyy") & ".xlsx"
ActiveWorkbook.SaveAs fileName
End Sub
4. Автоматическая рассылка отчётов с актуальной датой
Если вы используете Power Query или Power Automate, можно настроить автоматическую отправку отчётов по электронной почте с текущей датой в названии файла и теле письма. Например:
- 📧 Тема письма:
Отчёт по продажам на &[Date] - 📎 Имя файла:
Продажи_15.05.2026.xlsx
FAQ: Частые вопросы о работе с датами в Excel
🔍 Почему функция СЕГОДНЯ() показывает вчерашнюю дату?
Это происходит, если:
- На вашем компьютере неправильно настроены дата и время (проверьте в Панели управления).
- Файл Excel открыт дольше суток, и автоматический пересчёт отключён (включите его на вкладке
Формулы). - Вы скопировали ячейку с
СЕГОДНЯ()как значение, а не формулу.
Решение: обновите системную дату или пересчитайте лист вручную (F9).
📅 Как вставить дату, которая не будет меняться при открытии файла?
Есть три способа:
- Используйте горячие клавиши
Ctrl + ;. - Введите
=СЕГОДНЯ(), затем выполнитеКопировать → Специальная вставка → Значения. - Напишите дату вручную в формате
дд.мм.гггг.
⏳ Можно ли сделать так, чтобы дата обновлялась раз в день, а не при каждом изменении?
Да, для этого:
- Создайте ячейку с формулой
=СЕГОДНЯ(). - На вкладке
Формулыустановите режим вычисленийВручную. - Настройте автоматический пересчёт раз в сутки через VBA или Power Automate.
Пример макроса для пересчёта в 9:00 утра:
Sub AutoRecalc()
If Hour(Now()) = 9 And Minute(Now()) = 0 Then
Application.CalculateFull
End If
End Sub
🌍 Как сделать так, чтобы дата отображалась на русском (например, "15 мая 2026")?
Используйте функцию ТЕКСТ с нужным форматом:
=ТЕКСТ(СЕГОДНЯ(); "д мmmм гггг")
Результат: 15 мая 2026. Другие варианты:
"дд мммм"→15 Мая"д мmmм, дddd"→15 мая, среда
🔄 Как скопировать дату из Excel в Word так, чтобы она обновлялась?
Для динамической вставки:
- В Excel создайте именованный диапазон (например,
ТекущаяДата) с формулой=СЕГОДНЯ(). - В Word перейдите на вкладку
Вставка → Объект → Объект Excel. - Вставьте ссылку на именованный диапазон.
Теперь при обновлении данных в Word (Правка → Ссылки → Обновить) дата будет актуальной.