Как посчитать разницу между датами в Excel
Чтобы узнать разницу между двумя датами в днях, достаточно вычесть одну дату из другой (=B1-A1) и применить числовой формат к ячейке. Для более сложных расчетов (месяцы, годы, рабочие дни) используйте встроенные функции DATEDIF, DAYS и NETWORKDAYS. Эти методы работают во всех версиях Excel без установки дополнений.
Базовый расчет: разница в днях
Excel хранит даты как порядковые номера (где 1 — это 1 января 1900 года), поэтому математические операции над ними выполняются как над обычными числами.
Способ 1: Простое вычитание
Самый быстрый метод, если нужно получить количество дней.
- Введите начальную дату в ячейку A1 (например,
01.01.2026). - Введите конечную дату в ячейку B1 (например,
15.04.2026). - В ячейке C1 введите формулу:
=B1 - A1
- Важно: Если результат отображается как дата (например,
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.
Исключение праздников
Добавьте третий аргумент — диапазон ячеек с датами праздников.
- Создайте список праздников в столбце D (D1:D10).
- Используйте формулу:
=NETWORKDAYS(A1; B1; $D$1:$D$10)
(Знаки доллара фиксируют диапазон при копировании формулы).
Нестандартная рабочая неделя
Если у вас выходные не сб-вс (например, только воскресенье или сдвиг графика), используйте NETWORKDAYS.INTL.
=NETWORKDAYS.INTL(A1; B1; "0000011")
Где строка из нулей и единиц указывает, какие дни являются рабочими (0) или выходными (1).
Формула полного стажа: «Х лет Y мес Z дней»
Чтобы получить красивую строку вида «5 лет 3 месяца 12 дней», нужно скомбинировать несколько вызовов DATEDIF.
Предположим, дата начала в A1, дата конца в B1:
- Годы:
=DATEDIF(A1; B1; "Y") - Месяцы (остаток):
=DATEDIF(A1; B1; "YM") - Дни (остаток):
=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 с аналогичным синтаксисом.