Как в Excel сделать формулу с датой: 12 рабочих способов с примерами

Почему формулы с датами в Excel вызывают сложности

Работа с датами в Microsoft Excel — одна из самых востребованных, но при этом неочевидных задач. На первый взгляд кажется, что достаточно ввести число в формате ДД.ММ.ГГГГ, и программа сама всё поймёт. Однако на практике пользователи сталкиваются с ошибками #ЗНАЧ!, некорректными результатами вычитания или сложения дат, а также проблемами при импорте данных из других систем. Всё дело в том, что Excel хранит даты не как текст, а как серийные числа — где 1 соответствует 1 января 1900 года (или 1904 года в Mac-версиях).

Эта статья поможет разобраться, как правильно создавать формулы с датами, избегая типичных ошибок. Мы рассмотрим базовые функции вроде ДАТА() и СЕГОДНЯ(), научимся вычислять разницу между датами, добавлять дни/месяцы/годы, а также автоматизировать расчёты с учётом рабочих дней и праздников. Особое внимание уделим скрытым ловушкам Excel, из-за которых формулы могут давать сбой — например, при работе с датами до 1900 года или при копировании формул между листами.

Базовые функции для работы с датами

Прежде чем переходить к сложным расчётам, нужно освоить пять ключевых функций Excel, которые лежат в основе любой работы с датами. Без них невозможно корректно складывать, вычитать или сравнивать временные отметки.

  • 📅 ДАТА(год; месяц; день) — создаёт дату из отдельных компонентов. Пример: =ДАТА(2026; 5; 15) вернёт 15.05.2026.
  • 🕒 СЕГОДНЯ() — возвращает текущую дату, обновляемую при каждом пересчёте листа. Важно: не имеет аргументов!
  • ДЕНЬ(дата), МЕСЯЦ(дата), ГОД(дата) — извлекают день, месяц или год из даты. Пример: =МЕСЯЦ("15.05.2026") вернёт 5.
  • 🔄 ДАТАЗНАЧ(текст) — преобразует текстовый формат даты в серийное число. Спасает при импорте данных из CSV.
  • 📊 ДЕНЬНЕД(дата; [тип_возврата]) — определяет день недели (по умолчанию 1 = воскресенье, 2 = понедельник).

Например, чтобы вывести текущий год в отдельной ячейке, достаточно написать =ГОД(СЕГОДНЯ()). А если нужно узнать, сколько дней осталось до Нового года, используйте комбинацию =ДАТА(2026; 1; 1) - СЕГОДНЯ(). Обратите внимание: Excel автоматически форматирует результат как число, но по сути это разница в днях.

📊 Какую функцию для работы с датами вы используете чаще всего?
ДАТА()
СЕГОДНЯ()
ДЕНЬНЕД()
ДАТАЗНАЧ()
Другую

Как вычитать и складывать даты

Самая частая операция с датами — вычисление разницы между ними. Например, чтобы узнать срок выполнения задачи или возраст человека. Здесь есть нюансы:

  1. Простое вычитание. Если в ячейке A1 дата начала проекта, а в B1 — окончания, формула =B1-A1 вернёт количество дней между ними. Excel автоматически преобразует разницу в числовой формат.
  2. Функция РАЗНДАТ(). Устаревшая, но полезная функция для вычисления разницы в годах, месяцах или днях. Синтаксис: =РАЗНДАТ(начальная_дата; конечная_дата; "y") (где "y" — годы, "m" — месяцы, "d" — дни).
  3. Добавление дней. Чтобы прибавить 10 дней к дате в A1, используйте =A1+10. Для месяцев или лет нужны функции ДАТАМЕС() или комбинация ДАТА().

Пример с ДАТАМЕС():

=ДАТАМЕС(A1; 3)  

Важно: если результат вычитания отрицательный (например, -5), это означает, что конечная дата раньше начальной. Чтобы избежать путаницы, используйте функцию АБС() для получения абсолютного значения.

Почему РАЗНДАТ() может выдавать ошибку?

Функция РАЗНДАТ() не документирована в новых версиях Excel, но продолжает работать для обратной совместимости. Если она не распознаётся, проверьте региональные настройки или замените её на комбинацию ДНИ(), МЕСЯЦ() и ГОД().

Работа с рабочими днями и праздниками

В бизнес-задачах часто нужно учитывать только рабочие дни, исключая выходные и праздники. Для этого в Excel есть две специализированные функции:

  • 🏢 РАБДЕНЬ(начальная_дата; дни; [праздники]) — возвращает дату через заданное количество рабочих дней. Пример: =РАБДЕНЬ("01.05.2026"; 10) вернёт 15.05.2026 (пропуская 9 и 12 мая — выходные).
  • 🎉 ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники]) — считает количество рабочих дней между двумя датами. Полезно для расчёта сроков выполнения задач.

Чтобы функция учитывала праздники, нужно создать диапазон с их датами (например, D1:D10) и указать его третьим аргументом:

=РАБДЕНЬ("01.05.2026"; 5; D1:D10)

Где D1:D10 — список праздничных дат в формате ДД.ММ.ГГГГ.

Создать список праздников в отдельном диапазоне|Проверить формат дат (ДД.ММ.ГГГГ)|Указать диапазон праздников в функции|Проверьте региональные настройки (выходные дни)

-->

⚠️ Внимание: По умолчанию РАБДЕНЬ() считает субботу и воскресенье выходными. Если в вашей стране другие выходные (например, пятница и суббота), используйте функцию РАБДЕНЬ.МЕЖД (доступна в Excel 2010 и новее), где можно задать собственные параметры выходных.

Автоматическое обновление дат

Функция СЕГОДНЯ() — мощный инструмент для создания динамических отчётов, но она таит в себе подводные камни. Главный из них: дата обновляется при каждом пересчёте листа (например, при открытии файла или изменении любой ячейки). Это может быть неудобно, если нужно зафиксировать дату создания документа.

Решения:

ЗадачаФункция/методПример
Текущая дата (обновляется)СЕГОДНЯ()=СЕГОДНЯ()
Фиксированная дата созданияГорячие клавиши Ctrl+;Вставляет статическую дату
Текущее времяТДАТА()=ТДАТА()
Дата без обновленияКопирование → "Значения"ПКМ → "Специальная вставка" → "Значения"

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

Sub UpdateDate()

Range("A1").Value = Date

End Sub

Привяжите его к кнопке на листе или запускайте вручную.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот самые распространённые:

  1. Текст вместо даты. Если Excel воспринимает введённую дату как текст (выравнивание по левому краю), используйте ДАТАЗНАЧ() или измените формат ячейки на Дата.
  2. Ошибка #ЧИСЛО!. Возникает, если результат вычислений выходит за пределы допустимых дат Excel (до 01.01.1900 или после 31.12.9999).
  3. Неправильный регион. В американской версии Excel по умолчанию используется формат ММ/ДД/ГГГГ. Если вы введёте 05.06.2026, программа может интерпретировать это как 5 июня или 6 мая.
  4. Копирование формул. При копировании формулы с относительными ссылками (например, =A1+7) адреса ячеек сдвигаются. Используйте абсолютные ссылки ($A$1) для фиксированных дат.

⚠️ Внимание: Если вы работаете с историческими датами до 1900 года, Excel их не поддерживает. В этом случае используйте текстовый формат или специализированные надстройки, например, XLDate.

Продвинутые приёмы: условное форматирование и Power Query

Формулы с датами становятся ещё мощнее в комбинации с другими инструментами Excel:

  • 🎨 Условное форматирование. Подсвечивайте просроченные задачи (например, если дата в ячейке A1 меньше СЕГОДНЯ()). Правило: =A1<СЕГОДНЯ() → красный фон.
  • 🔄 Power Query. Импортируйте данные с датами из внешних источников (например, Google Sheets или SQL), автоматически преобразуя их в формат Excel.
  • 📈 Сводные таблицы. Группируйте данные по годам, кварталам или месяцам для анализа временных трендов.

Пример использования Power Query:

  1. Импортируйте данные через Данные → Получить данные → Из файла.
  2. В редакторе Power Query выделите столбец с датами, нажмите Преобразовать → Формат → Дата.
  3. Добавьте пользовательский столбец с формулой = Date.Year([ВашаДата]) для извлечения года.

FAQ: Ответы на частые вопросы

Как в Excel посчитать количество дней между двумя датами?

Используйте простое вычитание: =КонечнаяДата - НачальнаяДата. Результат будет в днях. Если нужны годы или месяцы, применяйте РАЗНДАТ() или комбинацию ГОД()/МЕСЯЦ().

Почему Excel показывает дату как число (например, 45341)?

Это серийный номер даты. Чтобы преобразовать его в читаемый формат, измените формат ячейки на Дата (правый клик → Формат ячеек → Числовой формат → Дата).

Как прибавить к дате 1 год, учитывая високосные годы?

Используйте =ДАТА(ГОД(A1)+1; МЕСЯЦ(A1); ДЕНЬ(A1)). Эта формула корректно обрабатывает 29 февраля. Альтернатива — =ДАТАМЕС(A1; 12).

Можно ли в Excel работать с временем (часами и минутами)?

Да! Для времени используйте функции ВРЕМЯ(), ЧАС(), МИНУТЫ(). Например, =ВРЕМЯ(14; 30; 0) создаст значение 14:30:00. Чтобы сложить время, используйте формат ячейки [ч]:мм (например, для суммы > 24 часов).

Как зафиксировать дату, чтобы она не обновлялась?

Вместо СЕГОДНЯ() вставьте статическую дату с помощью Ctrl+; (Windows) или Command+; (Mac). Либо скопируйте ячейку с датой и вставьте как Значения.