Мастер работы с датами в Excel: от простого вычитания до точного стажа

Иван Корнев·11.04.2026·4 мин

Чтобы посчитать разницу между двумя датами в днях, просто вычтите одну ячейку из другой (=B2-A2). Для расчета полных лет, месяцев или трудового стажа используйте скрытую, но мощную функцию DATEDIF, а для учета выходных и праздников — NETWORKDAYS. Эти инструменты позволяют автоматизировать расчет возраста, сроков договоров и отработанного времени без сложных надстроек.

Почему даты в Excel — это числа

В основе всех расчетов лежит простой факт: Excel хранит даты как порядковые номера. 1 января 1900 года — это число 1, 2 января — 2, и так далее. Сегодняшний день (например, 11 апреля 2026 года) хранится как число 45753.

Это означает, что математические операции над датами работают так же, как и с обычными числами. Разница между двумя датами — это просто количество дней между их числовыми значениями.

Как проверить числовое значение даты? Выделите ячейку с датой и нажмите Ctrl+Shift+1 (или измените формат на «Общий»). Вы увидите число, которое Excel использует для вычислений. Верните формат даты через Ctrl+Shift+3.

Функция DATEDIF: секретное оружие для стажа и возраста

Функция DATEDIF (Date Difference) уникальна тем, что она не отображается в списке подсказок при вводе формулы, но полностью поддерживается во всех версиях Excel. Она идеально подходит для расчета стажа, возраста и сроков в годах, месяцах и днях.

Синтаксис и параметры

=DATEDIF(начальная_дата; конечная_дата; "единица_измерения")

Третий аргумент определяет, что именно мы считаем:

КодЧто возвращаетПример использования
"y"Полные годыВозраст человека, полный стаж
"m"Полные месяцыСрок аренды, подписки
"d"Полные дниДлительность проекта
"ym"Месяцы без учета летОстаток месяцев после полных лет
"md"Дни без учета лет и месяцевОстаток дней после полных месяцев
"yd"Дни без учета летДней до следующего юбилея

Расчет полного стажа (Годы + Месяцы + Дни)

Самая частая задача в кадровой работе — вывести стаж в понятном формате: «5 лет 3 месяца 12 дней». Одной формулой это сделать нельзя, но можно сцепить результаты трех вызовов DATEDIF:

=DATEDIF(A2; B2; "y") & " г. " & DATEDIF(A2; B2; "ym") & " мес. " & DATEDIF(A2; B2; "md") & " дн."

Где A2 — дата приема на работу, B2 — дата увольнения или сегодня (TODAY()).

Порядок дат имеет значение! Первая дата всегда должна быть раньше второй. Если вы поставите дату окончания первой, функция вернет ошибку #NUM!.

Учет рабочих дней: функция NETWORKDAYS

При расчете сроков исполнения задач или оплачиваемого времени календарные дни не подходят — нужно исключить выходные. Для этого используется функция ЧИСТРАБДНИ (в английской версии NETWORKDAYS).

Формула:

=NETWORKDAYS(начало; конец; [праздники])
  1. Начало и Конец: Ячейки с датами.
  2. Праздники (необязательно): Диапазон ячеек, где перечислены государственные праздники, которые также не считаются рабочими днями.

Пример: Если проект длится с 1 марта по 31 марта, простое вычитание даст 30 дней. Но NETWORKDAYS покажет около 22 дней (минус субботы и воскресенья). Если добавить диапазон с праздниками (например, 8 марта), результат уменьшится еще на один день.

Для проектов со сменным графиком (где выходные не только сб/вс) используйте расширенную версию NETWORKDAYS.INTL (ЧИСТРАБДНИ.МЕЖД), где можно задать свой код выходных дней.

Практические сценарии использования

1. Автоматический расчет возраста

Чтобы узнать точный возраст сотрудника или клиента на текущую дату:

=DATEDIF(Дата_Рождения; TODAY(); "y") & " лет"

Функция TODAY() автоматически обновляется каждый день, поэтому возраст будет расти сам собой при открытии файла.

2. Контроль сроков договора

Проверка, сколько осталось дней до конца контракта, и подсветка критических сроков:

=ЕСЛИ(Дата_Окончания - TODAY() <= 30; "Внимание: менее 30 дней"; "В норме")

Эту формулу можно использовать в условном форматировании, чтобы ячейка становилась красной при приближении даты окончания.

3. Расчет премии за выслугу лет

Если премия зависит от полных лет стажа:

=ЕСЛИ(DATEDIF(Дата_Приема; TODAY(); "y") >= 5; "Премия 10%"; "Стандарт")

Частые ошибки при работе с датами

  • Ошибка #ЗНАЧ! (#VALUE!): Возникает, если одна из ячеек содержит текст, а не дату. Часто бывает при копировании данных из 1С или веб-сайтов. Решение: Используйте «Текст по столбцам» или функцию ДАТАЗНАЧ.
  • Неверный формат отображения: После вычитания дат результат может отобразиться как дата (например, «05.янв.1900»), хотя там должно быть число дней. Решение: Измените формат ячейки с результатом на «Общий» или «Числовой».
  • Игнорирование високосных годов: При ручном делении дней на 365 вы получите погрешность. Функции DATEDIF и YEARFRAC учитывают високосные годы автоматически.

Часто задаваемые вопросы (FAQ)

Как посчитать разницу в месяцах, если даты находятся в разных годах? Используйте код "m" в функции DATEDIF. Она корректно считает полные месяцы независимо от года: =DATEDIF(A1; B1; "m").

Можно ли рассчитать стаж в десятичных годах (например, 5.5 лет)? Да, для этого лучше подойдет функция ДОЛЯГОДА (YEARFRAC). Формула: =YEARFRAC(Дата_Начала; Дата_Конца; 1). Аргумент 1 указывает на фактическое количество дней в году (учет високосных).

Почему функция DATEDIF не появляется в подсказках? Это не ошибка. Функция осталась в Excel для совместимости с очень старыми версиями (Lotus 1-2-3). Просто вводите её название вручную, и она сработает.

Как учесть разные часовые пояса? Стандартные функции Excel не учитывают время суток при расчете разницы в днях, если оно не критично. Если важна точность до часа, убедитесь, что в ячейках указано и время, а формат ячейки настроен соответствующим образом ([ч] для сумм часов).