Расчёт количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel. Будь то сроки выполнения проектов, возраст сотрудников, продолжительность аренды или анализ временных интервалов — умение быстро вычислять разницу в днях экономит часы ручной работы. Но даже опытные пользователи иногда путаются: как учесть только рабочие дни? Как исключить праздники? Или почему формула выдаёт ошибку #ЗНАЧ! вместо числа?
В этой статье мы разберём 5 проверенных способов подсчёта дней в Excel — от простейших до продвинутых, с учётом календарных нюансов. Вы узнаете, как работать с функциями ДАТАРАЗН, ЧИСТРАБДНИ, и даже как создать динамический календарь для автоматического исключения выходных. А в конце — ответы на частые вопросы и лайфхаки для ускорения расчётов.
Если вы никогда не работали с датами в Excel, начните с первого раздела — там объяснено, как программа хранит даты и почему простое вычитание иногда даёт неожиданные результаты. Для опытных пользователей полезны будут разделы про рабочие дни с исключением праздников и условное форматирование для визуализации просроченных сроков.
Почему простое вычитание дат не всегда работает
На первый взгляд, чтобы посчитать дни между двумя датами, достаточно вычесть одну из другой: =B2-A2. И в большинстве случаев этот метод сработает. Но есть 3 подводных камня, о которых многие не знают:
1. Формат ячеек. Если ячейка с датой отформатирована как текст (например, после импорта из CSV), Excel воспримет её как строку, а не как дату. Вычитание текста из текста вернёт ошибку. Чтобы проверить формат, выделите ячейку и посмотрите на панель инструментов: там должно быть указано Дата или Общий, но не Текст.
2. Системная дата 1900 vs 1904. В Excel для Windows и Mac используется разная стартовая точка отсчёта: 1 января 1900 года или 1 января 1904. Это может сбивать расчёты на 4 года (1462 дня). Проверить настройку можно в Файл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1904.
3. Время в датах. Если в ячейке хранится не только дата, но и время (например, 15.05.2026 14:30), простое вычитание даст дробное число, где целая часть — дни, а дробная — часы. Чтобы получить только дни, используйте функцию ЦЕЛОЕ().
Способ 1: Базовый расчёт дней (функция ДАТАРАЗН)
Функция ДАТАРАЗН (англ. DATEDIF) — самый универсальный инструмент для вычисления разницы между датами. Она скрыта в списке функций, но работает во всех версиях Excel, включая Excel 365 и Excel 2019. Синтаксис:
=ДАТАРАЗН(начальная_дата; конечная_дата; единица_измерения)
Аргумент единица_измерения определяет, что именно считать:
- 📅
"D"— количество полных дней между датами. - 📆
"M"— количество полных месяцев. - 🗓️
"Y"— количество полных лет. - 🔄
"YM"— месяцы без учёта лет (например, разница между 15.01.2023 и 10.03.2023 вернёт 1, а не 2).
Пример: чтобы посчитать дни между 01.01.2026 и 31.12.2026, используйте:
=ДАТАРАЗН("01.01.2026"; "31.12.2026"; "D")
Результат: 365 (или 366 для високосного года).
Ограничение: ДАТАРАЗН не учитывает рабочие/выходные дни. Для этого нужны другие функции (см. следующий раздел).
Способ 2: Рабочие дни без праздников (функция ЧИСТРАБДНИ)
Если нужно посчитать только рабочие дни (исключая субботу, воскресенье и праздники), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS). Синтаксис:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Аргумент [праздники] необязателен — это диапазон ячеек с датами праздничных дней. Например, если в ячейках D2:D10 перечислены государственные праздники, формула примет вид:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
Пример расчёта рабочих дней между 01.01.2026 и 10.01.2026 (с учётом новогодних каникул):
| Начальная дата | Конечная дата | Праздники | Формула | Результат |
|---|---|---|---|---|
| 01.01.2026 | 10.01.2026 | 01.01–08.01 | =ЧИСТРАБДНИ(A2;B2;D2:D9) | 2 |
| 15.01.2026 | 20.01.2026 | — | =ЧИСТРАБДНИ(A3;B3) | 4 |
Важно: функция Если праздники повторяются ежегодно (например, 1 января), создайте отдельный лист с формулами типа ЧИСТРАБДНИ считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, рабочая суббота), используйте ЧИСТРАБДНИ.МЕЖД (англ. NETWORKDAYS.INTL), где можно задать свои выходные.
Как добавить праздники автоматически?
=ДАТА(ГОД(СЕГОДНЯ());1;1) для автоматического обновления дат. Затем ссылайтесь на этот диапазон в ЧИСТРАБДНИ.
Способ 3: Рабочие дни с нестандартными выходными
Для компаний с ненормированным графиком (например, рабочая суббота и выходной понедельник) подойдёт функция ЧИСТРАБДНИ.МЕЖД. Она позволяет указать, какие дни недели считать выходными. Синтаксис:
=ЧИСТРАБДНИ.МЕЖД(начальная_дата; конечная_дата; [выходные]; [праздники])
Аргумент [выходные] — это число или строка, где каждый символ обозначает день недели (начиная с понедельника):
- 🔢
1— выходной. - 🔡
0— рабочий день. - 📜 Строка
"0000011"— выходные суббота и воскресенье (стандартный график). - 📜 Строка
"0000101"— выходные пятница и суббота (например, для мусульманских стран).
Пример: посчитаем рабочие дни между 01.05.2026 и 10.05.2026 для графика с выходными в пятницу и субботу:
=ЧИСТРАБДНИ.МЕЖД("01.05.2026"; "10.05.2026"; "0000101")
Результат: 6 дней (исключены 3.05, 4.05, 9.05, 10.05).
📌 Убедитесь, что даты в формате Дата, а не текст
📌 Создайте список праздников в отдельном диапазоне
📌 Проверьте код выходных (например, "0000011" для стандартного графика)
📌 Используйте абсолютные ссылки на праздники (например, $D$2:$D$10)
-->
Способ 4: Динамический календарь с условным форматированием
Если вам нужно не только посчитать дни, но и визуализировать просроченные сроки или приближающиеся дедлайны, сочетание формул с условным форматированием станет мощным инструментом. Например, можно автоматически подсвечивать ячейки красным, если до конечной даты осталось менее 5 рабочих дней.
Алгоритм действий:
- Создайте столбец с формулой для расчёта оставшихся дней:
=ЧИСТРАБДНИ(СЕГОДНЯ(); B2) - Выделите ячейки с результатом и откройте
Условное форматирование → Создать правило → Использовать формулу.... - Введите формулу для подсветки:
=И(B2>СЕГОДНЯ(); ЧИСТРАБДНИ(СЕГОДНЯ(); B2)<5) - Задайте красный цвет заливки и нажмите
ОК.
Теперь все задачи, у которых осталось менее 5 рабочих дней, будут выделены красным. Аналогично можно настроить жёлтую подсветку для предупреждения за 10 дней и зелёную — для выполненных задач.
Способ 5: Расчёт дней с учётом времени (дробные значения)
Если в ваших данных хранятся не только даты, но и время (например, 15.05.2026 14:30), простое вычитание даст дробное число, где целая часть — дни, а дробная — доля дня. Чтобы разделить дни и часы, используйте:
- 📅 Для целых дней:
=ЦЕЛОЕ(B2-A2). - ⏰ Для часов:
=ОСТАТ((B2-A2);1)*24. - ⏱️ Для минут:
=ОСТАТ((B2-A2)*1440;1)(1440 = 24 часа × 60 минут).
Пример: разница между 15.05.2026 08:00 и 17.05.2026 16:30:
=ЦЕЛОЕ("17.05.2026 16:30"-"15.05.2026 08:00")
Вернёт 2 (полных дня), а формула для часов:
=ОСТАТ(("17.05.2026 16:30"-"15.05.2026 08:00");1)*24
Вернёт 8,5 (часов).
⚠️
Внимание: Если в расчётах важны часы и минуты, убедитесь, что ячейки отформатированы какДатас включённым временем. Для этого выделите ячейки →Формат ячеек → Числовые форматы → Датаи выберите формат с временем (например,14.03.2012 13:30).
Типичные ошибки и как их избежать
Даже простые формулы с датами могут выдавать ошибки. Вот топ-5 проблем и их решения:
1. Ошибка #ЗНАЧ!
Причина: одна или обе даты в текстовом формате. Решение: преобразуйте текст в дату с помощью ДАТАЗНАЧ():
=ДАТАРАЗН(ДАТАЗНАЧ("01.01.2026"); ДАТАЗНАЧ("10.01.2026"); "D")
2. Отрицательное количество дней
Причина: конечная дата раньше начальной. Решение: используйте АБС() для модуля:
=АБС(ДАТАРАЗН(A2; B2; "D"))
3. Некорректный результат для високосных годов
Причина: Excel считает 29 февраля 1900 года (которого не было). Решение: обновите систему дат в параметрах или используйте ДАТА() для явного указания года.
4. Функция не обновляется автоматически
Причина: в настройках отключён автоматический пересчёт. Решение: нажмите Формулы → Вычислить лист или включите Автоматический пересчёт в Параметры → Формулы.
5. Праздники не учитываются
Причина: диапазон с праздниками не зафиксирован абсолютными ссылками. Решение: используйте $D$2:$D$10 вместо D2:D10.
⚠️
Внимание: Если вы копируете формулы между файлами, проверьте, что ссылки на праздники не сбились. Например, формула =ЧИСТРАБДНИ(A2; B2; Лист2!D2:D10) при копировании в другой файл может указать на несуществующий лист.
FAQ: Ответы на частые вопросы
Как посчитать дни между сегодняшней датой и другой датой?
Используйте функцию СЕГОДНЯ():
=ДАТАРАЗН(СЕГОДНЯ(); B2; "D")
Если нужны рабочие дни:
=ЧИСТРАБДНИ(СЕГОДНЯ(); B2)
Можно ли посчитать дни между датами в Google Sheets?
Да, все описанные функции работают и в Google Таблицах, включая DATEDIF, NETWORKDAYS и NETWORKDAYS.INTL. Синтаксис идентичен.
Как исключить из расчёта конкретные дни недели (например, среду)?
Используйте ЧИСТРАБДНИ.МЕЖД с кастомным шаблоном выходных. Например, для выходных в среду и воскресенье укажите строку "0010001":
=ЧИСТРАБДНИ.МЕЖД(A2; B2; "0010001")
Почему формула возвращает ###### вместо числа?
Это означает, что столбец слишком узкий для отображения результата. Растяните столбец или измените формат ячейки на Общий.
Как посчитать количество полных недель между датами?
Разделите количество дней на 7 и округлите вниз:
=ЦЕЛОЕ(ДАТАРАЗН(A2; B2; "D")/7)