Расчет интервалов и рабочих дней в Excel
Чтобы узнать количество дней между двумя датами в Excel, просто вычтите одну дату из другой (например, =B2-A2). Для подсчета рабочих дней используйте функцию =NETWORKDAYS(), а для точного расчета стажа или возраста в годах и месяцах — скрытую функцию =DATEDIF(). Ниже приведены подробные инструкции и примеры для каждого сценария.
Базовый расчет: количество календарных дней
Самый простой способ узнать длительность периода — вычитание. В Excel даты хранятся как порядковые номера, поэтому арифметические операции над ними возвращают количество дней.
Формула:
=B2 - A2
Где A2 — начальная дата, B2 — конечная.
Если результат отображается как дата (например, «05.янв.1900»), измените формат ячейки на «Общий» или «Числовой». Нажмите Ctrl+1, выберите категорию «Числовой» и установите 0 знаков после запятой.
Важные нюансы:
- Результат всегда положительный, если конечная дата позже начальной.
- Чтобы включить оба дня периода (начальный и конечный), добавьте единицу:
=B2 - A2 + 1. Это часто требуется при расчете длительности отпуска или больничного.
Точный расчет: годы, месяцы и дни (Функция DATEDIF)
Для кадрового учета, расчета возраста или стажа простого вычитания недостаточно, так как месяцы имеют разную длину. Используйте функцию DATEDIF. Она не отображается в списке подсказок Excel, но работает во всех версиях.
Синтаксис: =DATEDIF(начальная_дата; конечная_дата; "единица_измерения")
| Код единицы | Что считает | Пример использования |
|---|---|---|
| "y" | Полные годы | Расчет возраста |
| "m" | Полные месяцы | Общий срок договора |
| "d" | Дни | Аналог простого вычитания |
| "ym" | Месяцы без учета лет | Остаток месяцев после полных лет |
| "yd" | Дни без учета лет | Дни от последнего дня рождения |
| "md" | Дни без учета месяцев и лет | Остаток дней после полных месяцев |
Пример сложной формулы (стаж): Чтобы получить текст вида «5 лет 3 месяца 12 дней», объедините функции:
=DATEDIF(A2; B2; "y") & " лет " & DATEDIF(A2; B2; "ym") & " мес. " & DATEDIF(A2; B2; "md") & " дн."
Подсчет рабочих дней (NETWORKDAYS)
В бизнес-задачах часто нужно исключить выходные. Функция NETWORKDAYS автоматически пропускает субботы и воскресенья.
Базовая формула (только выходные):
=NETWORKDAYS(A2; B2)
С учетом праздников:
Если в компании есть официальные нерабочие дни, создайте список дат в отдельном диапазоне (например, E2:E10) и передайте его третьим аргументом:
=NETWORKDAYS(A2; B2; E2:E10)
Функция NETWORKDAYS считает понедельником–пятницей рабочими днями по умолчанию. Если ваша рабочая неделя отличается (например, смена 2/2 или работа по выходным), используйте функцию NETWORKDAYS.INTL.
Работа со сменными графиками (NETWORKDAYS.INTL)
Эта функция позволяет задать свой код выходных дней.
=NETWORKDAYS.INTL(A2; B2; "код_выходных"; праздники)
Популярные коды:
"0000011"— выходные суббота и воскресенье (стандарт)."1111110"— выходной только воскресенье."0000001"— выходной только понедельник."1100000"— выходные пятница и суббота.
Планирование: дата окончания работ (WORKDAY)
Если вам нужно не посчитать дни, а найти дату, когда закончится проект через N рабочих дней, используйте функцию WORKDAY.
Формула:
=WORKDAY(начальная_дата; количество_дней; [праздники])
Пример: Дата старта в A2, длительность 10 рабочих дней в B2, праздники в E2:E5.
=WORKDAY(A2; B2; E2:E5) вержет дату завершения, пропустив все выходные и указанные праздники.
Аналогично существует WORKDAY.INTL для нестандартных графиков работы.
Частые ошибки
- Текст вместо даты. Если формула возвращает ошибку
#ЗНАЧ!, проверьте, что ячейки действительно содержат даты, а не текст. Дата должна выравниваться по правому краю ячейки по умолчанию. - Неверный порядок дат. В
DATEDIFначальная дата обязательно должна быть меньше конечной, иначе будет ошибка#ЧИСЛО!. В обычном вычитании (B2-A2) получится отрицательное число. - Игнорирование високосных годов. При ручном расчете дней легко ошибиться. Функции Excel учитывают високосные годы автоматически.
- Лишние пробелы. При импорте данных из других систем в ячейках могут остаться пробелы. Используйте функцию
=TRIM()или «Текст по столбцам» для очистки.
FAQ
Как посчитать возраст человека на текущую дату?
Используйте формулу: =DATEDIF(A2; СЕГОДНЯ(); "y"), где A2 — дата рождения. Функция СЕГОДНЯ() автоматически обновляется при открытии файла.
Можно ли посчитать разницу во времени (часы и минуты)?
Да. Вычтите дату с временем из другой даты с временем. Чтобы увидеть результат в часах, примените к ячейке пользовательский формат [ч]:мм. Квадратные скобки позволяют сумме часов превышать 24.
Что делать, если DATEDIF не работает?
Функция является устаревшей (скрытой), но поддерживается ради совместимости. Если она недоступна (крайне редкие случаи), используйте комбинацию: (ГОД(B2)-ГОД(A2))*12 + МЕСЯЦ(B2)-МЕСЯЦ(A2) для месяцев, но это менее точно для дней.