Как в Excel сделать формулу на дату: пошаговое руководство с примерами

Введение: Почему формулы дат в Excel — это не просто календарь

Вы когда-нибудь пытались вручную рассчитать разницу между двумя датами в Excel, тратя часы на пересчет дней, месяцев и лет? Или сталкивались с тем, что формула suddenly возвращает странное число вместо ожидаемой даты? Работа с датами в Excel — это отдельная вселенная с собственными правилами, где 1 января 1900 года считается точкой отсчета, а функция СЕГОДНЯ() может обновить ваши расчеты каждый раз при открытии файла.

В этой статье мы разберем не только базовые функции вроде ДАТА() или ДЕНЬ(), но и продвинутые приемы: как прибавить к дате 3 рабочих дня (исключая выходные), автоматически обновлять возраст сотрудников или рассчитывать сроки выполнения проектов с учетом праздников. Спойлер: 90% ошибок при работе с датами в Excel связаны с неправильным форматированием ячеек — и мы покажем, как этого избежать.

Неважно, ведете ли вы личный бюджет, управляете проектами в Agile или анализируете логистические цепочки — умение работать с датами сэкономит вам десятки часов в год. Начнем с азов и дойдем до формул, которые вы не найдете в стандартной справке Excel.

1. Базовые функции дат: ДАТА(), ДЕНЬ(), МЕСЯЦ(), ГОД()

Если вы думаете, что для ввода даты в Excel достаточно просто напечатать 15.05.2026, вы правы... но только наполовину. Excel хранит даты как числа (где 1 = 1 января 1900 года), а отображает их в привычном формате благодаря форматированию ячеек. Давайте разберемся, как это работает на практике.

Функция ДАТА(год; месяц; день) — ваш основной инструмент для создания дат "на лету". Например, формула =ДАТА(2026; 12; 31) вернет 31.12.2026. Но что делать, если вам нужно извлечь отдельно день, месяц или год? Здесь пригодятся:

  • 📅 ДЕНЬ(дата) — возвращает день месяца (от 1 до 31). Пример: =ДЕНЬ("15.05.2026")15
  • 📆 МЕСЯЦ(дата) — возвращает номер месяца (от 1 до 12). Пример: =МЕСЯЦ("15.05.2026")5
  • 🗓️ ГОД(дата) — возвращает год (четырехзначное число). Пример: =ГОД("15.05.2026")2026

Важный нюанс: если вы вводите дату вручную, Excel может интерпретировать ее по-разному в зависимости от региональных настроек. Например, 05.06.2026 в американском формате станет 6 мая, а не 5 июня. Чтобы избежать путаницы, всегда используйте функцию ДАТА() или проверяйте формат ячейки (Формат ячеек → Дата).

⚠️ Внимание: Если после ввода формулы с датой вы видите число вроде 45341 вместо 15.05.2026, не паникуйте! Это нормальное поведение Excel. Просто измените формат ячейки на Дата.
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

2. Динамические даты: СЕГОДНЯ() и ТДАТА()

Представьте, что вам нужно отслеживать актуальный возраст клиентов или сроки выполнения задач. Вручную обновлять даты каждый день? Это неэффективно. Здесь на помощь приходят две волшебные функции:

  • 🔄 СЕГОДНЯ() — возвращает текущую дату (обновляется при каждом открытии файла или пересчете)
  • ТДАТА() — возвращает текущие дату и время (с точностью до секунды)

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

ЗадачаФормулаРезультат (если сегодня 15.05.2026)
Текущая дата=СЕГОДНЯ()15.05.2026
День недели сегодня=ТЕКСТ(СЕГОДНЯ();"dddd")среда
Дата через 30 дней=СЕГОДНЯ()+3014.06.2026
Количество дней до Нового года=ДАТА(2026;12;31)-СЕГОДНЯ()230

Остерегайтесь ловушки: если вы используете СЕГОДНЯ() в формулах для расчета сроков (например, =B2-СЕГОДНЯ() для подсчета оставшихся дней), результат будет меняться каждый раз при открытии файла. Это может быть полезно для отчетов, но опасно для архивных данных. В таких случаях лучше фиксировать дату вручную или использовать Ctrl+; (горячая клавиша для вставки текущей даты).

3. Расчет разницы между датами: РАЗНДАТ() и альтернативы

Одна из самых востребованных операций — вычисление интервала между двумя датами. Например, сколько дней осталось до дедлайна или сколько лет человеку. Для этого в Excel есть специальная функция РАЗНДАТ(), но с ней связано несколько подводных камней.

Синтаксис функции: РАЗНДАТ(нач_дата; кон_дата; единица_измерения), где единица_измерения может быть:

  • "y" — полные годы
  • "m" — полные месяцы
  • "d" — дни
  • "ym" — месяцы без учета лет
  • "yd" — дни без учета лет
  • "md" — разница в днях без учета месяцев и лет

Примеры:

=РАЗНДАТ("15.05.1990"; "15.05.2026"; "y")  → 34 (полных года)

=РАЗНДАТ("15.05.2026"; СЕГОДНЯ(); "d") → 0 (если сегодня 15.05.2026)

=РАЗНДАТ("01.01.2026"; "31.12.2026"; "md") → 364 (дни без учета года)

Но что, если функции РАЗНДАТ() нет в вашей версии Excel? В Excel 2019 и новее она доступна по умолчанию, а в Excel 2016 и старше может потребоваться включить надстройку Пакет анализа. Альтернатива — использовать комбинацию функций:

=ГОД(B2)-ГОД(A2) - ЕСЛИ(ИЛИ(МЕСЯЦ(B2)<МЕСЯЦ(A2); И(МЕСЯЦ(B2)=МЕСЯЦ(A2); ДЕНЬ(B2)<ДЕНЬ(A2))); 1; 0)

Эта формула рассчитывает полные годы между датами в ячейках A2 и B2.

⚠️ Внимание: Функция РАЗНДАТ() не учитывает високосные годы при расчете дней. Если вам нужна точная разница в днях с учетом високосных лет, используйте простую разность: =B2-A2 (убедитесь, что ячейки отформатированы как Общий или Числовой).

4. Работа с рабочими днями: РАБДЕНЬ(), ЧИСТРАБДНИ()

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

  • 📊 РАБДЕНЬ(нач_дата; дни; [праздники]) — возвращает дату через указанное количество рабочих дней
  • 📈 ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]) — считает количество рабочих дней между датами

Пример 1: Рассчитаем дату выполнения задачи через 10 рабочих дней, начиная с 15.05.2026 (исключая субботу и воскресенье):

=РАБДЕНЬ("15.05.2026"; 10)

Результат: 29.05.2026 (пропуская 18-19 мая и 25-26 мая).

Пример 2: Подсчитаем рабочие дни между 1 и 31 мая 2026 года, исключая праздники (1 мая и 9 мая):

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; {"01.05.2026"; "09.05.2026"})

Результат: 21 (в мае 2026 года 23 рабочих дня минус 2 праздничных).

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

=РАБДЕНЬ("15.05.2026"; 5; ; 11)

Здесь 11 — это код для выходных в пятницу и субботу (см. справку Excel по кодам выходных дней).

Создать список праздничных дней в отдельном диапазоне|Проверить региональные настройки выходных|Убедиться, что даты введены как даты, а не текст|Отформатировать результат как дату (если используете РАБДЕНЬ)

-->

5. Продвинутые приемы: ДАТАМЕС(), КОНМЕСЯЦА(), ДЕНЬНЕД()

Когда базовых функций недостаточно, на помощь приходят более специализированные инструменты. Рассмотрим три из них, которые значительно расширяют возможности работы с датами.

1. ДАТАМЕС(дата; месяцы) — добавляет указанное количество месяцев к дате, корректно обрабатывая переходы через годы. Например:

=ДАТАМЕС("31.01.2026"; 1)  → 29.02.2026 (автоматически корректирует на последний день февраля)

=ДАТАМЕС("15.05.2026"; -3) → 15.02.2026 (вычитание месяцев)

2. КОНМЕСЯЦА(дата; месяцы) — возвращает последний день месяца, отстоящего на указанное количество месяцев от начальной даты. Полезно для расчета дедлайнов:

=КОНМЕСЯЦА("15.05.2026"; 0) → 31.05.2026

=КОНМЕСЯЦА("15.05.2026"; 2) → 31.07.2026

3. ДЕНЬНЕД(дата; [тип_возврата]) — определяет день недели (от 1 до 7). Параметр тип_возврата задает начало недели:

  • 1 или опущен — воскресенье = 1, суббота = 7
  • 2 — понедельник = 1, воскресенье = 7
  • 3 — понедельник = 0, воскресенье = 6
=ДЕНЬНЕД("15.05.2026"; 2) → 3 (среда, если неделя начинается с понедельника)

Комбинируя эти функции, можно создавать мощные инструменты. Например, формула для определения ближайшей пятницы:

=СЕГОДНЯ()+7-ДЕНЬНЕД(СЕГОДНЯ();2)+5
Как работает формула для ближайшей пятницы?

Функция ДЕНЬНЕД(СЕГОДНЯ();2) возвращает номер дня недели (1=понедельник...7=воскресенье).

Выражение 7-ДЕНЬНЕД()+5 рассчитывает, сколько дней нужно прибавить к сегодняшней дате, чтобы получить пятницу (5 соответствует пятнице в системе, где 1=понедельник).

6. Ошибки при работе с датами и как их избежать

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

ОшибкаПричинаРешение
###### в ячейкеСлишком большое число (дата после 31.12.9999)Используйте реальные даты или проверьте формулу на корректность
Формула возвращает число вместо датыЯчейка отформатирована как Общий или ЧисловойИзмените формат на Дата (Ctrl+1 → категория Дата)
#ЗНАЧ! при вычитании датОдна из "дат" на самом деле текстПроверьте формат ячеек или используйте ДАТАЗНАЧ() для преобразования текста в дату
Неправильный расчет возрастаФункция РАЗНДАТ() не учитывает, был ли день рождения в этом годуИспользуйте =РАЗНДАТ(A2;СЕГОДНЯ();"y") для полных лет
РАБДЕНЬ() игнорирует праздникиДиапазон с праздниками не указан или отформатирован как текстУбедитесь, что праздники введены как даты в отдельном диапазоне

Особенно коварна ошибка с текстом вместо даты. Например, если вы импортировали данные из CSV, даты могут выглядеть как 15.05.2026, но на самом деле быть текстом. Чтобы преобразовать текст в дату, используйте функцию ДАТАЗНАЧ():

=ДАТАЗНАЧ("15.05.2026")

Еще одна частая проблема — расчет возраста. Многие ошибочно используют простую разность лет:

=ГОД(СЕГОДНЯ())-ГОД(A2)  → НЕПРАВИЛЬНО (не учитывает месяц и день рождения)!

Правильный вариант:

=РАЗНДАТ(A2; СЕГОДНЯ(); "y")

7. Практические примеры: от бюджета до управления проектами

Теория — это хорошо, но давайте посмотрим, как формулы дат применяются на практике. Вот три реальных сценария с готовыми решениями.

Пример 1: Расчет возраста сотрудников

Допустим, в столбце A у вас даты рождения, а в столбце B нужно посчитать возраст:

=РАЗНДАТ(A2; СЕГОДНЯ(); "y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "ym") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "md") & " дн."

Результат: 34 лет, 0 мес., 15 дн. (если сегодня 15.05.2026, а дата рождения 30.04.1990).

Пример 2: Контроль дедлайнов в проекте

У вас есть дата начала проекта в B2 и длительность в рабочих днях в C2. Чтобы рассчитать дату завершения с учетом выходных:

=РАБДЕНЬ(B2; C2)

Добавим проверку на просрочку (если сегодня позже даты завершения, выделим ячейку красным через Условное форматирование):

=ЕСЛИ(СЕГОДНЯ()>D2; "Просрочено"; "В срок")

Пример 3: Автоматический расчет пеней за просрочку платежа

Допустим, оплата должна была поступить до 10.05.2026 (ячейка E2), а сегодня 15.05.2026. Пени составляют 0.1% за каждый день просрочки:

=ЕСЛИ(СЕГОДНЯ()>E2; (СЕГОДНЯ()-E2)*0,001*F2; 0)

Где F2 — сумма долга. Формула вернет сумму пеней или 0, если просрочки нет.

Эти примеры можно адаптировать под любые задачи: от расчета срока годности продуктов до планирования графиков поставок. Главное — понимать логику функций и правильно форматировать данные.

8. Автоматизация с датами: Power Query и динамические массивы

Если вам нужно обработать сотни или тысячи дат, ручной ввод формул станет кошмаром. К счастью, в современных версиях Excel есть инструменты для автоматизации:

Power Query (Get & Transform):

  • 🔄 Импортируйте данные с датами из CSV, SQL или веб-страниц
  • 📅 Преобразуйте текстовые даты в настоящие даты за один клик (Преобразовать → Формат данных → Дата)
  • ➕ Добавляйте столбцы с расчетом разницы между датами или извлечением дня недели

Пример: Импортируем данные о продажах с датами в формате MM/DD/YYYY (американский стиль) и преобразуем их в DD.MM.YYYY:

  1. Загрузите данные через Данные → Получить данные → Из файла → Из текстового/CSV
  2. В редакторе Power Query выделите столбец с датами
  3. Нажмите Преобразовать → Формат данных → Использовать локаль... и выберите Русский
  4. Укажите исходный формат MM/DD/YYYY и целевой DD.MM.YYYY

Динамические массивы (Excel 365 и 2021):

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

=ПОСЛЕДОВАТ(ЧИСТРАБДНИ(КОНМЕСЯЦА(СЕГОДНЯ();0)+1; КОНМЕСЯЦА(СЕГОДНЯ();1); ); ; КОНМЕСЯЦА(СЕГОДНЯ();0)+1; 1)

Эта формула вернет вертикальный список всех рабочих дней следующего месяца, начиная с первого числа.

Для визуализации данных с датами идеально подходят сводные таблицы с группировкой по месяцам/кваrtалам или условное форматирование (например, выделение красным просроченных задач).

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

Как в Excel прибавить к дате 1 месяц, чтобы получить последний день этого месяца?

Используйте комбинацию функций КОНМЕСЯЦА() и ДАТАМЕС():

=КОНМЕСЯЦА(ДАТАМЕС(A2;1);0)

Где A2 — ячейка с исходной датой. Эта формула сначала добавляет 1 месяц, а затем находит последний день этого месяца.

Почему функция РАЗНДАТ() возвращает ошибку #ИМЯ?

Вероятно, функция РАЗНДАТ() не доступна в вашей версии Excel. Включите ее через:

  1. Файл → Параметры → Надстройки
  2. Внизу окна выберите Управление: Надстройки ExcelПерейти...
  3. Отметьте Пакет анализа и нажмите OK

Если надстройки нет, используйте альтернативные формулы (см. раздел 3).

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

Используйте функцию РАЗНДАТ() с параметром "y":

=РАЗНДАТ("15.05.1990"; "15.05.2026"; "y")

Эта формула вернет 34, так как день рождения в 2026 году еще не наступил (если сегодня 15.05.2026). Если бы сегодня было 16.05.2026, результат все равно был бы 34, потому что 15.05 еще не исполнилось.

Можно ли в Excel создать календарь на год с автоматическим обновлением?

Да! Вот пошаговая инструкция:

  1. В ячейке A1 введите =ДАТА(2026;1;1) (первый день года)
  2. В ячейке B1 введите =ЕСЛИ(МЕСЯЦ(A1)=МЕСЯЦ(A1+6);"";A1+1) и протяните вправо на 6 ячеек (дни недели)
  3. В ячейке A2 введите =ЕСЛИ(ДЕНЬ(A1+7)=1;A1+7;"") и протяните на весь календарь
  4. Отформатируйте ячейки как Дата с форматированием д (только день)
  5. Добавьте условное форматирование для выходных (например, серый фон для субботы и воскресенья)

Для автоматического обновления года используйте =ГОД(СЕГОДНЯ()) вместо жестко заданного 2026.

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

Используйте функцию РАБДЕНЬ() с отрицательным значением:

=РАБДЕНЬ("20.05.2026"; -5; {"01.05.2026"; "09.05.2026"})

Эта формула вернет дату, которая была 5 рабочих дней назад от 20.05.2026, исключая указанные праздники. Результат: 13.05.2026 (пропуская 1, 9 мая и выходные).