Как посчитать разницу между датами в Excel

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

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

Базовый расчет: разница в днях

Excel хранит даты как порядковые номера (где 1 — это 1 января 1900 года), поэтому математические операции над ними выполняются как над обычными числами.

Способ 1: Простое вычитание

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

  1. Введите начальную дату в ячейку A1 (например, 01.01.2026).
  2. Введите конечную дату в ячейку B1 (например, 15.04.2026).
  3. В ячейке C1 введите формулу:
   =B1 - A1
  1. Важно: Если результат отображается как дата (например, 05.04.1900), измените формат ячейки. Нажмите правой кнопкой мыши на ячейку → Формат ячеек → выберите Числовой (или «Общий»).

Результат: 105.

Если ячейка упорно остается в формате даты, умножьте формулу на 1: =(B1-A1)*1. Это принудительно преобразует результат в число.

Способ 2: Функция DAYS

Функция доступна начиная с Excel 2013. Она удобна тем, что позволяет сразу прописывать даты в формуле без ссылок на ячейки.

Синтаксис: =DAYS(конечная_дата; начальная_дата)

Пример:

=DAYS("15.04.2026"; "01.01.2026")

Результат будет таким же — 105 дней. Функция автоматически игнорирует текстовое представление дат, если оно распознано системой.

Точный расчет: годы, месяцы и дни (DATEDIF)

Для расчета возраста, стажа или сроков аренды простого вычитания недостаточно, так как количество дней в месяцах разное. Здесь на помощь приходит скрытая функция DATEDIF. Она не отображается в подсказках автозаполнения, но работает во всех версиях программы.

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

Коды единиц измерения:

КодЧто считаетПример результата
"D"Полные дни105
"M"Полные месяцы3
"Y"Полные годы0
"YM"Месяцы без учета лет3 (разница между январем и апрелем)
"MD"Дни без учета месяцев и лет14
"YD"Дни без учета года105 (если год високосный, логика меняется)

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

  • Сколько полных месяцев прошло: =DATEDIF(A1; B1; "M")
  • Сколько дней осталось до конца месяца (игнорируя год): =DATEDIF(A1; B1; "MD")

Функция DATEDIF возвращает ошибку #NUM!, если начальная дата больше конечной. Всегда проверяйте порядок дат или используйте конструкцию ЕСЛИ для подстраховки.

Учет выходных и праздников

При расчете сроков проектов или оплаты труда часто нужно исключить выходные дни.

Функция NETWORKDAYS

Считает количество рабочих дней между двумя датами (исключая субботу и воскресенье).

Формула:

=NETWORKDAYS(A1; B1)

Если между 1 января и 15 апреля 74 рабочих дня, функция вернет 74.

Исключение праздников

Добавьте третий аргумент — диапазон ячеек с датами праздников.

  1. Создайте список праздников в столбце D (D1:D10).
  2. Используйте формулу:
   =NETWORKDAYS(A1; B1; $D$1:$D$10)

(Знаки доллара фиксируют диапазон при копировании формулы).

Нестандартная рабочая неделя

Если у вас выходные не сб-вс (например, только воскресенье или сдвиг графика), используйте NETWORKDAYS.INTL.

=NETWORKDAYS.INTL(A1; B1; "0000011")

Где строка из нулей и единиц указывает, какие дни являются рабочими (0) или выходными (1).

Формула полного стажа: «Х лет Y мес Z дней»

Чтобы получить красивую строку вида «5 лет 3 месяца 12 дней», нужно скомбинировать несколько вызовов DATEDIF.

Предположим, дата начала в A1, дата конца в B1:

  1. Годы: =DATEDIF(A1; B1; "Y")
  2. Месяцы (остаток): =DATEDIF(A1; B1; "YM")
  3. Дни (остаток): =DATEDIF(A1; B1; "MD")

Итоговая формула в одной ячейке:

=DATEDIF(A1; B1; "Y") & " лет " & DATEDIF(A1; B1; "YM") & " мес " & DATEDIF(A1; B1; "MD") & " дн"

Для расчета текущего стажа сотрудника вместо конечной даты используйте функцию TODAY(): =DATEDIF(A1; TODAY(); "Y") & " лет" Эта формула будет автоматически обновляться каждый день.

Частые ошибки и решения

ПроблемаПричинаРешение
Результат отображается как дата (например, янв.00)Ячейке присвоен формат «Дата»Измените формат на «Числовой» или «Общий».
Ошибка #ЗНАЧ!Дата записана как текст (например, "15.04.26" без точки или с дефисом в неверном месте)Используйте функцию ДАТА(2026;4;15) или ДАТАЗНАЧ("15.04.2026").
Отрицательное числоНачальная дата позже конечнойПоменяйте ячейки местами в формуле или оберните в ABS(): =ABS(B1-A1).
DATEDIF не появляется в спискеФункция скрыта разработчикамиВводите название вручную, она сработает.

FAQ

Можно ли посчитать разницу во времени (часы, минуты)? Да. Вычтите дату со временем из другой даты со временем (=B1-A1). Затем примените пользовательский формат ячейки [ч]:мм (квадратные скобки нужны, чтобы часы не сбрасывались после 24).

Почему DATEDIF с кодом "MD" иногда выдает отрицательное число? Это известный баг функции при переходе через конец месяца (например, с 31 января на 1 марта). В таких случаях надежнее использовать сложные формулы с функциями ДЕНЬ и КОНМЕСЯЦА или просто считать общую разницу в днях.

Работают ли эти формулы в Google Таблицах? Да, все перечисленные функции (DATEDIF, DAYS, NETWORKDAYS) полностью поддерживаются в Google Sheets с аналогичным синтаксисом.