Мастер работы с датами в Excel: от простого вычитания до точного стажа
Чтобы посчитать разницу между двумя датами в днях, просто вычтите одну ячейку из другой (=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 марта по 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 не учитывают время суток при расчете разницы в днях, если оно не критично. Если важна точность до часа, убедитесь, что в ячейках указано и время, а формат ячейки настроен соответствующим образом ([ч] для сумм часов).