Работа с датами в Microsoft Excel — одна из самых востребованных задач. Нужно ли проставить сегодняшнее число в отчёте, автоматизировать обновление даты в шаблоне или зафиксировать текущий момент для дальнейших расчётов? В каждом случае подход будет разным. Новички часто путают динамические и статические даты, из-за чего данные в таблицах обновляются не так, как ожидалось.
В этой статье разберём все возможные методы: от простого ввода с клавиатуры до сложных формул с условиями. Вы узнаете, как сделать так, чтобы дата обновлялась автоматически при каждом открытии файла, и как закрепить её навсегда. А ещё — типичные ошибки, которые портят расчёты, и лайфхаки для ускорения работы.
Если вы работаете с финансовыми отчётами, графиками или просто ведёте журнал событий, умение правильно обращаться с датами сэкономит часы времени. Например, функция TODAY() вернёт сегодняшнюю дату, но она будет меняться каждый день. А комбинация клавиш Ctrl+; вставит текущую дату один раз — и она останется неизменной. Какой способ выбрать? Это зависит от задачи.
Важно понимать: Excel хранит даты как числа (количество дней с 1 января 1900 года), а время — как дробную часть. Поэтому при работе с формулами иногда возникают неожиданные результаты. Например, если вычтите одну дату из другой, получите количество дней между ними. Эта особенность лежит в основе многих расчётов — от сроков выполнения задач до амортизации оборудования.
1. Ввод текущей даты вручную (статический метод)
Самый простой способ — ввести дату с клавиатуры. Он подходит, если вам нужно зафиксировать сегодняшнее число раз и навсегда. Например, для пометки "отчёт сформирован" или "документ подписан".
Чтобы вставить текущую дату как текст (она не будет меняться при пересчёте):
- Выделите ячейку, куда нужно вставить дату.
- Нажмите комбинацию клавиш
Ctrl+;(точка с запятой).
Готово! В ячейке появится сегодняшняя дата в формате по умолчанию (например, 15.05.2026). Этот метод не использует формулы, поэтому дата останется прежней даже через год.
Ещё один вариант — ввести дату в формате, который распознаёт Excel:
- 📅
15.05.2026или15-05-2026 - 📅
15 мая 2026или15 мая(год подставится автоматически) - 📅
2026/05/15(американский формат)
Если Excel не распознаёт ввод как дату, проверьте региональные настройки в Файл → Параметры → Дополнительно → Параметры редактирования. Иногда программа ожидает другой разделитель (точка вместо тире или наоборот).
2. Функция TODAY(): динамическая текущая дата
Когда дата должна обновляться автоматически при каждом открытии файла или пересчёте формул, используйте функцию =TODAY(). Она не требует аргументов и возвращает сегодняшнюю дату в формате числа (например, 45415, что соответствует 15 мая 2026 года).
Примеры применения:
- 📊 Отслеживание сроков: =TODAY()-B2 (сколько дней прошло с даты в ячейке B2)
- 📊 Автоматические напоминания: =IF(TODAY()>D5; "Срок истёк"; "В порядке")
- 📊 Финансовые расчёты: =TODAY()-A1 (дней владения активом для налоговых целей)
Обратите внимание: функция TODAY() обновляется только при пересчёте листа. Если вы измените данные в другой ячейке, дата обновится. Но если просто открыть файл, Excel может не пересчитать её сразу — для этого нажмите F9.
Важный нюанс: если вы сохраните файл в формате .xls (Excel 97-2003), функция TODAY() перестанет работать при открытии в новых версиях. Всегда используйте .xlsx или .xlsm для совместимости.
3. Функция NOW(): дата + время
Если нужна не только дата, но и текущее время, используйте =NOW(). Эта функция возвращает дату и время в одном значении (например, 15.05.2026 14:30). Как и TODAY(), она динамическая и обновляется при пересчёте.
Примеры:
- ⏰ Журнал событий: =NOW() в столбце "Время записи"
- ⏰ Контроль выполнения: =IF(NOW()>C10; "Просрочено"; "В срок")
- ⏰ Логистика: =NOW()-B2 (время в пути в часах)
Чтобы отобразить только время без даты, примените формат ячейки:
- Выделите ячейку с
=NOW(). - Нажмите
Ctrl+1(или правая кнопка →Формат ячеек). - Выберите категорию
Времяи нужный формат (например,13:30:55).
Почему NOW() показывает неправильное время?
Если функция =NOW() возвращает время с разницей в несколько часов, проверьте настройки часового пояса в Windows. Excel берёт системное время, а не данные из интернета. Также убедитесь, что в параметрах Excel (Файл → Параметры → Формулы) не отключён автоматический пересчёт.
Критическая особенность: функция NOW() обновляется при каждом изменении на листе, а не раз в секунду. Для отображения "живых" часов потребуется VBA-скрипт.
4. Фиксированная дата через формулы (без обновления)
Иногда нужно, чтобы дата вставлялась автоматически, но не менялась со временем. Например, для метки "отчёт создан". В этом случае комбинация клавиш Ctrl+; удобнее, но если требуется формула — используйте такой обходной путь:
Введите в ячейку:
=TEXT(TODAY(); "дд.мм.гггг")
затем скопируйте её, выделите ту же ячейку и выполните Вставка → Специальная вставка → Значения. Теперь в ячейке останется текстовое представление даты, которое не будет обновляться.
Альтернативный метод — использовать Power Query:
- Перейдите на вкладку
Данные → Получить данные → Из других источников → Пустой запрос. - В редакторе Power Query введите в строку формул:
= DateTime.LocalNow().Date. - Нажмите
Готовои загрузите данные в лист.
Этот способ подходит для сложных отчётов, где дата должна фиксироваться на этапе загрузки данных.
5. Автоматизация с помощью VBA
Для продвинутых пользователей: макрос, который вставляет текущую дату в выбранную ячейку по нажатию кнопки или сочетания клавиш. Откройте редактор VBA (Alt+F11) и вставьте этот код в модуль:
Sub InsertCurrentDate()
ActiveCell.Value = Date
ActiveCell.NumberFormat = "дд.мм.гггг"
End Sub
Теперь назначьте макрос на кнопку или горячие клавиши:
- 🖱️ Кнопка на листе:
Вставка → Кнопка (Элементы управления формы)→ привяжите макросInsertCurrentDate. - ⌨️ Горячие клавиши:
Файл → Параметры → Настройка ленты → Сочетания клавиш.
Преимущество VBA: можно настроить вставку даты в определённом формате или с дополнительными действиями (например, одновременно проставлять время и имя пользователя).
Убедитесь, что включена вкладка "Разработчик" (Файл → Параметры → Настройка ленты)
Сохраните файл в формате .xlsm (с поддержкой макросов)
Отключите блокировку макросов в параметрах безопасности (если файл доверенный)
Сделайте резервную копию данных перед запуском скриптов-->
6. Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при работе с датами. Вот самые распространённые ловушки:
⚠️ Внимание: Если после ввода=TODAY()отображается число вместо даты (например,45415), примените к ячейке форматДата(Ctrl+1 → Числовые форматы → Дата).
| Ошибка | Причина | Решение |
|---|---|---|
| Дата не обновляется | Отключён автоматический пересчёт | Включите в Формулы → Параметры вычислений → Автоматически или нажмите F9 |
Неверный формат (например, 05.15.2026) |
Неправильные региональные настройки | Измените формат ячейки или настройки Windows (Панель управления → Часы и регион) |
Функция TODAY() возвращает #ИМЯ? |
Опечатка в названии функции | Проверьте регистр: должно быть =TODAY(), а не =today() или =ТДАТА() |
| Дата сбивается при открытии на другом ПК | Разные настройки календаря (григорианский/исламский) | Установите одинаковые параметры в Файл → Параметры → Дополнительно → Параметры вычислений |
Ещё одна частая проблема: разница между датами считается некорректно из-за времени. Например, =TODAY()-A1 может вернуть 0,99 вместо 1, если в ячейке A1 указано время 23:59. Чтобы получить целое число дней, используйте =INT(TODAY()-A1).
⚠️ Внимание: При копировании ячеек с=TODAY()в другой файл формула сохраняется, но дата обновится на текущую в момент открытия нового документа. Чтобы этого избежать, используйтеСпециальную вставку → Значения.
7. Продвинутые приёмы: условия и расчёты с датами
Текущая дата часто используется в сложных формулах. Вот несколько полезных примеров:
1. Проверка просрочки:
=IF(TODAY()>B2; "Просрочено на " & TODAY()-B2 & " дней"; "В срок")
Эта формула не только определит просрочку, но и покажет количество дней.
2. Автоматическое обновление года:
=YEAR(TODAY())
Вернёт текущий год (например, 2026) для использования в заголовках отчётов.
3. Рабочие дни между датами:
=NETWORKDAYS(A1; TODAY())
Считает дни, исключая выходные (настраивается в параметрах функции).
4. Возраст в годах:
=DATEDIF(B2; TODAY(); "Y") & " лет"
Покажет полные годы между датой в B2 и сегодняшним днём.
Для работы с временными интервалами полезны функции:
- 🕒
HOUR(NOW())— текущий час - 🕓
MINUTE(NOW())— текущая минута - 📅
WEEKDAY(TODAY())— день недели (1=воскресенье, 2=понедельник и т.д.)
FAQ: Частые вопросы о датах в Excel
Можно ли сделать так, чтобы дата обновлялась каждую секунду, как настоящие часы?
Стандартные функции TODAY() и NOW() обновляются только при пересчёте листа. Для "живых" часов нужен VBA-скрипт с таймером:
Application.OnTime Now + TimeValue("00:00:01"), "UpdateClock"
или надстройка Power Tools.
Почему при копировании ячейки с =TODAY() в другой файл дата сбивается?
Функция TODAY() всегда возвращает текущую дату на момент открытия файла. Если вам нужно перенести фиксированную дату, скопируйте её как значение (Специальная вставка → Значения).
Как вставить дату без года (например, "15 мая")?
Используйте функцию TEXT:
=TEXT(TODAY(); "дд мммм")
или примените пользовательский формат ячейки дд мммм.
Можно ли сделать так, чтобы дата обновлялась только по понедельникам?
Да, с помощью формулы:
=IF(WEEKDAY(TODAY())=2; TODAY(); "Обновление в понедельник")
или через VBA-скрипт с проверкой дня недели.
Как в Google Таблицах вставить текущую дату?
Аналогично Excel, но функции называются по-английски:
=TODAY()— текущая дата=NOW()— дата + времяCtrl+;— статическая дата
В Google Таблицах дата обновляется чаще (раз в минуту при активном окне).