Как посчитать количество дней в Excel: от базовых формул до расчёта рабочих дней

Расчёт количества дней между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. Без этого не обойтись при планировании проектов, учёте рабочего времени, анализе временных интервалов или даже при составлении личного графика. Казалось бы, что может быть проще: вычесть одну дату из другой? Но на практике пользователи сталкиваются с десятками нюансов: как исключить выходные, учесть праздники, посчитать только будни или, наоборот, только выходные дни? А что если даты записаны в нестандартном формате или хранятся в разных ячейках?

В этой статье мы разберём 5 проверенных способов подсчёта дней в Excel — от элементарных арифметических операций до продвинутых функций вроде ДНИ, ЧИСТРАБДНИ и РАЗНДАТ. Вы узнаете, как избежать типичных ошибок (например, когда Excel воспринимает дату как текст), как автоматизировать расчёты для больших таблиц и даже как создать динамический календарь с подсчётом дней до дедлайна. Все примеры сопровождаются скриншотами, формулами для копирования и пояснениями для новичков.

1. Базовый метод: простое вычитание дат

Самый очевидный способ посчитать дни — вычесть из одной даты другую. Excel автоматически преобразует разницу в количество дней, так как хранит даты в виде последовательных чисел (начиная с 1 января 1900 года). Например, если в ячейке A1 указана дата 01.01.2026, а в B110.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)
📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Важный нюанс: функция ЧИСТРАБДНИ считает полные рабочие дни. Если начальная или конечная дата попадает на выходной, она не учитывается. Например, интервал с 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. Продвинутые приёмы: динамические расчёты и условное форматирование

Часто требуется не просто посчитать дни, а визуализировать результаты — например, выделить просроченные задачи или отобразить прогресс проекта. Для этого подойдёт условное форматирование:

  1. Выделите ячейки с датами или результатами расчётов.
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу, например:
    =И($B1-TODAY()>0)

    (выделит ячейки, где дата в столбце B ещё не наступила).

  5. Задайте цвет заполнения (например, зелёный для актуальных задач, красный — для просроченных).

Ещё один полезный приём — автоматический подсчёт дней до дедлайна. Для этого используйте комбинацию функций 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.