Зачем считать разницу между датами в Excel?
Расчёт количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel. Будь то сроки выполнения проектов, время до дедлайна, возраст сотрудников или продолжительность аренды — без точного подсчёта временных интервалов не обойтись. Вручную высчитывать разницу неэффективно, особенно если дат сотни. К счастью, Excel предлагает несколько способов автоматизации этого процесса: от простых формул до сложных функций с учётом выходных и праздников.
Многие пользователи ошибочно думают, что для такой задачи нужны специальные надстройки или макросы. На самом деле, 90% задач по расчёту разницы дат решаются стандартными функциями Excel без программирования. В этой статье мы разберём все возможные сценарии: от базового вычитания до учёта рабочих дней с исключением праздников. Вы узнаете, как избежать типичных ошибок (например, отрицательных значений) и как визуализировать результаты для отчётов.
Способ 1: Простое вычитание дат (базовая формула)
Самый очевидный и универсальный метод — вычесть одну дату из другой. Excel хранит даты в виде последовательных чисел (начиная с 1 января 1900 года = 1), поэтому арифметические операции с ними работают интуитивно. Формула выглядит так:
=КОНДАТА-НАЧДАТА
Где:
- 📅
КОНДАТА— ячейка с конечной датой (например,B2) - 📅
НАЧДАТА— ячейка с начальной датой (например,A2)
Пример: если в ячейке A2 указана дата 01.01.2026, а в B2 — 15.01.2026, формула =B2-A2 вернёт 14 (количество дней между датами). Этот метод подходит для любых форматов дат, которые Excel распознаёт автоматически (включая текстовой формат типа "10-янв-2026", если он корректно преобразован в дату).
⚠️ Внимание: Если конечная дата раньше начальной, результат будет отрицательным. Чтобы избежать этого, используйте функцию =ABS(КОНДАТА-НАЧДАТА) — она вернёт абсолютное значение (модуль числа).
Ячейки содержат даты, а не текст|Формат ячеек — "Дата" (не "Общий" или "Текст")|Конечная дата не раньше начальной (или используется ABS)|Результат отображается как число, а не дата-->
Способ 2: Функция РАЗНДАТ (DATEDIF) — скрытая мощь Excel
Функция РАЗНДАТ (или DATEDIF в английской версии) — это "секретное оружие" для работы с датами. Она не отображается в мастер-функций, но работает во всех версиях Excel. Её синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица)
Аргумент единица определяет, что именно считать:
- 📅
"D"— количество дней между датами - 📅
"M"— количество полных месяцев - 📅
"Y"— количество полных лет - 📅
"YM"— количество месяцев без учёта лет - 📅
"MD"— разница в днях без учёта месяцев и лет
Пример: =РАЗНДАТ("01.01.2026"; "31.12.2026"; "D") вернёт 365 (или 366 для високосного года). Главное преимущество РАЗНДАТ — гибкость: она может вернуть не только дни, но и месяцы или годы, что полезно для расчёта стажа или срока действия договоров.
| Единица | Пример | Результат | Описание |
|---|---|---|---|
"D" |
=РАЗНДАТ("01.01.2026"; "10.01.2026"; "D") |
9 |
Полная разница в днях |
"M" |
=РАЗНДАТ("01.01.2026"; "01.03.2026"; "M") |
2 |
Полные месяцы (игнорирует дни) |
"Y" |
=РАЗНДАТ("01.01.2020"; "01.01.2026"; "Y") |
4 |
Полные годы |
"MD" |
=РАЗНДАТ("15.01.2026"; "10.02.2026"; "MD") |
26 |
Дни без учёта месяцев (31-15+10) |
Простое вычитание|Функция РАЗНДАТ|ЧИСТРАБДНИ|Другие функции|Не знаю, как считать-->
Способ 3: Учёт только рабочих дней (функция ЧИСТРАБДНИ)
Если вам нужно посчитать только рабочие дни (исключая субботу и воскресенье), используйте функцию ЧИСТРАБДНИ (или NETWORKDAYS):
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
Необязательный аргумент [праздники] — это диапазон ячеек с датами праздников, которые тоже нужно исключить. Например, если в ячейках D2:D5 перечислены праздники (например, 01.01.2026, 07.01.2026), формула примет вид:
=ЧИСТРАБДНИ(A2; B2; D2:D5)
Пример: между 01.01.2026 (понедельник) и 10.01.2026 (среда) при стандартной 5-дневной рабочей неделе и празднике 7 января функция вернёт 7 рабочих дней (а не 9 календарных). Это незаменимо для расчёта сроков выполнения задач в проектном управлении или логистике.
⚠️ Внимание: ФункцияЧИСТРАБДНИсчитает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, рабочая суббота), используйтеЧИСТРАБДНИ.МЕЖД(или NETWORKDAYS.INTL), где можно задать свои выходные дни.
Способ 4: Расчёт с учётом нестандартных выходных (ЧИСТРАБДНИ.МЕЖД)
Для компаний с ненормированным графиком (например, 2/2 или 3/1) подойдёт функция ЧИСТРАБДНИ.МЕЖД. Она позволяет указать, какие дни недели считать выходными, с помощью 7-значного кода, где:
- 📅
1— понедельник - 📅
2— вторник - 📅 ...
- 📅
7— воскресенье
Пример: если выходные — суббота (6) и воскресенье (7), код будет 0000011 (или просто 11 в упрощённом виде). Формула:
=ЧИСТРАБДНИ.МЕЖД(A2; B2; [код_выходных]; [праздники])
Для графика 2 через 2 (выходные: вторник и среда) код будет 0110000 (или 1100000, если выходные — понедельник и вторник). Этот метод часто используется в сферах с посменной работой, например, в медицине или производстве.
Как задать код для графика "5/2 с плавающими выходными"?
Если выходные дни меняются (например, суббота-воскресенье в одну неделю и понедельник-вторник в другую), придётся разбить расчёт на периоды с разными кодами или использовать VBA. Альтернатива — создать вспомогательную таблицу с указанием выходных для каждой даты и использовать её в формуле.
Способ 5: Визуализация результатов (условное форматирование)
Чтобы быстро оценить, сколько дней осталось до дедлайна, можно подсветить ячейки с результатом с помощью условного форматирования. Например, если осталось меньше 5 дней — красный цвет, от 5 до 10 — жёлтый, больше 10 — зелёный.
Как настроить:
- Выделите ячейку с результатом (например,
C2). - Перейдите на вкладку
Главная → Условное форматирование → Правила выделения ячеек. - Выберите
"Меньше...", укажите значение5и задайте красный фон. - Повторите для других диапазонов (
"Между 5 и 10"— жёлтый,"Больше 10"— зелёный).
Для динамического отслеживания срока истечения (например, до конца акции) используйте формулу в условном форматировании:
=И($C20)
Эта формула подсветит ячейку, если дата в C2 уже прошла (TODAY() — текущая дата). Такой приём часто применяют в таблицах с контрольными сроками (например, для отслеживания просроченных задач в Trello или Jira).
Типичные ошибки и как их избежать
Даже в простых расчётах пользователи часто сталкиваются с неожиданными результатами. Вот самые распространённые проблемы и их решения:
- ❌ Результат в формате даты: Если после вычитания Excel показывает дату (например,
04.01.1900), а не число — измените формат ячейки на"Общий"или"Числовой". - ❌ Отрицательные значения: Используйте
=ABS(КОНДАТА-НАЧДАТА)или проверяйте порядок дат с помощью=ЕСЛИ(КОНДАТА>НАЧДАТА; ...). - ❌ #ЗНАЧ! в РАЗНДАТ: Убедитесь, что даты введены корректно (Excel распознаёт их как даты, а не как текст). Проверьте с помощью
=ТИП(A2)=1(должно вернутьИСТИНА). - ❌ Неверный учёт праздников: В
ЧИСТРАБДНИпраздники должны быть указаны как даты, а не текст. Используйте=ДАТАЗНАЧ(текст)для преобразования.
Ещё одна частая ошибка — неучёт високосных годов. Например, разница между 01.03.2023 и 01.03.2026 составит 366 дней (2026 год — високосный), а не 365. Чтобы избежать путаницы, используйте РАЗНДАТ с единицей "D" — она автоматически учитывает високосные годы.
Практические примеры применения
Разберём реальные кейсы, где расчёт дней между датами экономит время:
- Контроль сроков выполнения задач:
В таблице с задачами (столбцы:
"Дата начала","Дата окончания","Статус") добавьте столбец"Осталось дней"с формулой=МАКС(0; КОНДАТА-TODAY()). Это покажет актуальный остаток дней до дедлайна (если срок прошёл — вернёт0). - Расчёт возраста:
Для определения возраста сотрудника по дате рождения используйте
=РАЗНДАТ(датарожд; TODAY(); "Y"). Чтобы учитывать предстоящий день рождения, добавьте проверку:=ЕСЛИ(И(МЕСЯЦ(TODAY())=МЕСЯЦ(датарожд); ДЕНЬ(TODAY())>=ДЕНЬ(датарожд)); РАЗНДАТ(датарожд; TODAY(); "Y"); РАЗНДАТ(датарожд; TODAY(); "Y")-1) - Логистика и доставка:
Чтобы посчитать время доставки с учётом выходных и праздников, комбинируйте
ЧИСТРАБДНИс данными о времени обработки заказа. Например, если обработка занимает 1 рабочий день, а доставка — 3, формула будет:=ЧИСТРАБДНИ(TODAY()+1; TODAY()+1+3; праздники)
Для автоматизации отчётов можно создать динамическую таблицу с фильтрами по датам. Например, в отчёте по продажам добавьте столбец "Дней с последней покупки" с формулой =TODAY()-даталостпокупки, чтобы сегментировать клиентов по активности.
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датами в Google Sheets?
Да, все описанные функции работают и в Google Таблицах, за исключением РАЗНДАТ — её аналогом является =DATEDIF (на английском). Синтаксис идентичен: =DATEDIF(A2; B2; "D").
Как посчитать количество полных недель между датами?
Используйте формулу =ЦЕЛОЕ((КОНДАТА-НАЧДАТА)/7). Она делит разницу в днях на 7 и округляет до целого числа. Чтобы учесть неполные недели, добавьте =ОСТАТ((КОНДАТА-НАЧДАТА); 7) для остатка дней.
Почему Excel показывает ###### вместо результата?
Это означает, что столбец слишком узкий для отображения даты или числа. Расширьте столбец или измените формат ячейки на "Общий". Также проверьте, не является ли результат отрицательным (Excel не может отобразить отрицательную дату).
Как посчитать дни между датой и сегодняшним днём?
Используйте =TODAY()-нач_дата для дней с прошлого или =кон_дата-TODAY() для дней до будущей даты. Чтобы избежать отрицательных значений, оберните формулу в =ABS() или =МАКС(0; ...).
Можно ли учитывать полупраздничные дни (сокращённый рабочий день)?
Стандартные функции Excel не поддерживают учёта полупраздников. Решения:
- Создайте вспомогательную таблицу с коэффициентами (например,
0.5для полупраздников) и умножайте результатЧИСТРАБДНИна сумму коэффициентов. - Используйте VBA для создания пользовательской функции.