Расчёт количества дней между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. Без этого не обойтись при планировании проектов, учёте рабочего времени, анализе временных интервалов или даже при составлении личного графика. Казалось бы, что может быть проще: вычесть одну дату из другой? Но на практике пользователи сталкиваются с десятками нюансов: как исключить выходные, учесть праздники, посчитать только будни или, наоборот, только выходные дни? А что если даты записаны в нестандартном формате или хранятся в разных ячейках?
В этой статье мы разберём 5 проверенных способов подсчёта дней в Excel — от элементарных арифметических операций до продвинутых функций вроде ДНИ, ЧИСТРАБДНИ и РАЗНДАТ. Вы узнаете, как избежать типичных ошибок (например, когда Excel воспринимает дату как текст), как автоматизировать расчёты для больших таблиц и даже как создать динамический календарь с подсчётом дней до дедлайна. Все примеры сопровождаются скриншотами, формулами для копирования и пояснениями для новичков.
1. Базовый метод: простое вычитание дат
Самый очевидный способ посчитать дни — вычесть из одной даты другую. Excel автоматически преобразует разницу в количество дней, так как хранит даты в виде последовательных чисел (начиная с 1 января 1900 года). Например, если в ячейке A1 указана дата 01.01.2026, а в B1 — 10.01.2026, формула =B1-A1 вернёт значение 9.
Преимущества метода:
- ⚡ Мгновенный результат — не требует знания специальных функций.
- 🔄 Работает в обе стороны: если вычесть более позднюю дату из ранней, получится отрицательное число (удобно для анализа просрочек).
- 📊 Подходит для диапазонов: можно растянуть формулу на столбец с датами.
Но есть и подводные камни. Во-первых, Excel может ошибочно интерпретировать данные как текст, если они введены в нестандартном формате (например, 01-янв-2026 вместо 01.01.2026). Во-вторых, этот метод не учитывает выходные или праздники — он просто возвращает календарные дни.
2. Функция ДНИ: надёжный способ без ошибок
Для тех, кто предпочитает использовать встроенные функции, в Excel есть специализированная формула =ДНИ(конечная_дата; начальная_дата) (в английской версии — =DAYS). Она делает то же самое, что и простое вычитание, но гарантированно корректно обрабатывает даты, даже если они записаны в разных форматах.
Синтаксис функции:
=ДНИ(конечная_дата; начальная_дата)
Пример: =ДНИ("10.01.2026"; "01.01.2026") вернёт 9.
Когда стоит использовать ДНИ вместо вычитания?
- 🔍 Если даты хранятся в текстовом формате (например, импортированы из внешнего источника). Функция автоматически преобразует их в даты.
- 📅 Для динамических расчётов, где даты могут меняться (например, в отчётах с фильтрами).
- 🛡️ Чтобы избежать ошибок при копировании формул на большие диапазоны.
Что делать, если функция ДНИ возвращает ошибку #ЗНАЧ!?
Ошибка #ЗНАЧ! появляется, если хотя бы один из аргументов не является датой. Проверьте:
1. Формат ячеек с датами (должен быть "Дата", а не "Текст" или "Общий").
2. Правильность ввода дат (например, "31.02.2026" — несуществующая дата).
3. Наличие скрытых символов (пробелов, кавычек) в ячейках.
3. Расчёт рабочих дней: функция ЧИСТРАБДНИ
Если вам нужно посчитать только будни (понедельник–пятница), исключив выходные, используйте функцию =ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]) (англ. =NETWORKDAYS). Она автоматически пропускает субботу и воскресенье, а также может учитывать дополнительные праздничные дни, если вы укажете их в третьем аргументе.
Пример без учёта праздников:
=ЧИСТРАБДНИ("01.01.2026"; "10.01.2026")
Результат: 7 (из 9 календарных дней исключены 2 выходных).
Чтобы исключить праздники, создайте отдельный диапазон с датами (например, D1:D5) и добавьте его в формулу:
=ЧИСТРАБДНИ("01.01.2026"; "10.01.2026"; D1:D5)
Важный нюанс: функция ЧИСТРАБДНИ считает полные рабочие дни. Если начальная или конечная дата попадает на выходной, она не учитывается. Например, интервал с 06.01.2026 (суббота) по 08.01.2026 (понедельник) вернёт 1 рабочий день (только понедельник).
4. Учёт праздников и нестандартных выходных
В реальной работе выходные дни не всегда приходятся на субботу и воскресенье. Например, в некоторых странах выходной — пятница, а в производственных компаниях может быть сменный график. Для таких случаев используйте функцию =ЧИСТРАБДНИ.МЕЖД (англ. =NETWORKDAYS.INTL), где можно задать собственные параметры выходных.
Синтаксис:
=ЧИСТРАБДНИ.МЕЖД(нач_дата; кон_дата; [выходные]; [праздники])
Аргумент [выходные] — это число или строка, обозначающая дни недели, которые считаются выходными. Например:
1или"0000011"— выходные суббота и воскресенье (стандарт).11или"0000001"— выходной только понедельник.7или"1000001"— выходные пятница и суббота.
Пример: посчитать рабочие дни с 01.01.2026 по 10.01.2026, где выходные — пятница и суббота:
=ЧИСТРАБДНИ.МЕЖД("01.01.2026"; "10.01.2026"; 7)
Создать список праздничных дат в отдельном диапазоне|Проверить формат дат (должен быть "Дата")|Указать корректный код выходных дней|Использовать абсолютные ссылки на диапазон праздников (например, $D$1:$D$10)
-->
Если ваша компания работает по гибкому графику (например, 2 через 2), можно создать пользовательскую функцию на VBA или использовать комбинацию ЧИСТРАБДНИ.МЕЖД с дополнительными условиями. Однако для большинства задач стандартных параметров функции хватит.
5. Функция РАЗНДАТ: универсальный инструмент
Функция =РАЗНДАТ (англ. =DATEDIF) — одна из самых мощных, но малоизвестных возможностей Excel. Она позволяет рассчитывать разницу между датами не только в днях, но и в месяцах или годах. Синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица_измерения)
Аргумент единица_измерения определяет, в чём будет выражен результат:
"d"— количество дней."m"— количество полных месяцев."y"— количество полных лет."ym"— количество месяцев без учёта лет."yd"— количество дней без учёта лет.
Примеры:
| Формула | Результат | Пояснение |
|---|---|---|
=РАЗНДАТ("01.01.2026"; "10.01.2026"; "d") |
9 | Количество дней между датами. |
=РАЗНДАТ("01.01.2026"; "10.02.2026"; "m") |
1 | Количество полных месяцев (с 01.01 по 01.02). |
=РАЗНДАТ("01.01.2023"; "01.01.2026"; "y") |
1 | Количество полных лет. |
Функция РАЗНДАТ не документирована в справочной системе Excel, но работает во всех версиях программы, включая Excel 365 и Excel 2019. Это делает её незаменимой для расчётов возраста, стажа или сроков действия договоров.
6. Продвинутые приёмы: динамические расчёты и условное форматирование
Часто требуется не просто посчитать дни, а визуализировать результаты — например, выделить просроченные задачи или отобразить прогресс проекта. Для этого подойдёт условное форматирование:
- Выделите ячейки с датами или результатами расчётов.
- Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу, например:
=И($B1-TODAY()>0)(выделит ячейки, где дата в столбце B ещё не наступила).
- Задайте цвет заполнения (например, зелёный для актуальных задач, красный — для просроченных).
Ещё один полезный приём — автоматический подсчёт дней до дедлайна. Для этого используйте комбинацию функций TODAY() (текущая дата) и ДНИ:
=ДНИ(A1; TODAY())
Если результат отрицательный — дедлайн просрочен, если положительный — осталось столько-то дней.
=ЕСЛИ(A1-TODAY()>0; "Осталось " & A1-TODAY() & " дней"; "Просрочено на " & TODAY()-A1 & " дней")
-->
7. Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с ошибками при работе с датами. Вот самые распространённые проблемы и их решения:
⚠️ Внимание: Если после ввода даты в ячейке отображается набор символов вроде######, это означает, что столбец слишком узкий. Растяните его или измените формат ячейки наДата.
Ошибка #ЗНАЧ!: появляется, если Excel не распознаёт данные как даты. Проверьте:
- 📅 Формат ячейки (должен быть
Дата, а неТекст). - 🔍 Наличие скрытых символов (пробелов, кавычек). Используйте функцию
=ПРОБЕЛЫ()для очистки. - 🌍 Региональные настройки (в некоторых странах даты записываются как
MM/DD/YYYY, а неDD.MM.YYYY).
Некорректный результат: если разница между датами считается неправильно, убедитесь, что:
- 🔄 Вы не перепутали начальную и конечную даты (формула
=A1-B1даст отрицательное число, еслиA1раньшеB1). - 📊 В настройках Excel не установлена опция
1904 год как база отсчёта дат(проверьте вФайл → Параметры → Дополнительно).
⚠️ Внимание: ФункцииЧИСТРАБДНИиРАЗНДАТне работают с датами до 1900 года. Для исторических расчётов используйте простое вычитание или преобразуйте даты в числовой формат.
FAQ: Ответы на частые вопросы
Как посчитать дни между датами, если они записаны в текстовом формате?
Используйте функцию =ДАТАЗНАЧ(), чтобы преобразовать текст в дату:
=ДНИ(ДАТАЗНАЧ("10.01.2026"); ДАТАЗНАЧ("01.01.2026"))
Если даты хранятся в ячейках, примените ДАТАЗНАЧ к каждой:
=ДНИ(ДАТАЗНАЧ(A1); ДАТАЗНАЧ(B1))
Можно ли посчитать только выходные дни между двумя датами?
Да, для этого используйте комбинацию функций ЧИСТРАБДНИ и простого вычитания:
= (B1-A1) - ЧИСТРАБДНИ(A1; B1)
Эта формула вычитает из общего количества дней количество рабочих дней, оставляя только выходные.
Как посчитать дни с учётом времени (часов и минут)?
Excel хранит дату и время как дробное число (целая часть — дата, дробная — время). Чтобы посчитать разницу с точностью до минут, используйте:
= (B1-A1)*24*60
Где B1 и A1 — ячейки с датой и временем. Результат будет в минутах. Для часов используйте *24.
Почему функция ДНИ возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! означает, что Excel не распознаёт имя функции. Возможные причины:
- Вы используете Excel на русском языке, но ввели функцию на английском (
=DAYSвместо=ДНИ). - В названии функции есть опечатка (например,
=ДНИИ). - Вы работаете в Google Таблицах, где синтаксис может отличаться (проверьте документацию).
Как автоматически обновлять количество дней при изменении текущей даты?
Используйте функцию =TODAY() для получения текущей даты. Например, чтобы посчитать дни до дедлайна в ячейке A1:
=A1-TODAY()
Excel будет пересчитывать значение каждый раз при открытии файла или по команде F9.