Как посчитать количество суток между датами в Excel: формулы, примеры, лайфхаки

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

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

Особое внимание уделим скрытым ловушкам Excel: почему иногда формула =ДАТАЗНАЧ("31.02.2026") не работает, как правильно обрабатывать даты до 1900 года, и почему в некоторых случаях результат отличается на ±1 день. Эти нюансы критичны для финансовых отчётов, юридических документов и логистических расчётов.

1. Базовый метод: простая разница между датами

Самый очевидный способ посчитать количество суток — вычесть одну дату из другой. Excel автоматически преобразует разницу в дни, если ячейки отформатированы как дата. Например, формула =B2-A2 вернёт количество дней между датами в ячейках B2 и A2.

Но здесь есть подводные камни:

  • 📅 Формат ячеек: Если ячейки содержат текст (например, "01.01.2026" вместо даты), Excel выдаст ошибку. Используйте =ДАТАЗНАЧ() для преобразования.
  • Время суток: Если в датах указано время (например, 01.01.2026 14:30), результат будет дробным. Чтобы получить целые сутки, применяйте =ЦЕЛОЕ(B2-A2).
  • 🔄 Отрицательные значения: Если конечная дата раньше начальной, результат будет отрицательным. Используйте =АБС(B2-A2) для модуля.

Пример формулы с учётом всех нюансов:

=АБС(ЦЕЛОЕ(ДАТАЗНАЧ("15.03.2026") - ДАТАЗНАЧ("10.03.2026")))

2. Функция ДНИ(): специализированный инструмент

Для удобства в Excel есть dedicated-функция =ДНИ(конечная_дата; начальная_дата). Она возвращает количество полных дней между двумя датами, игнорируя время суток. Синтаксис проще, чем у ручного вычитания, и меньше шансов ошибиться.

Сравнение с базовым методом:

КритерийВычитание (B2-A2)Функция ДНИ()
Учёт времениДа (дробный результат)Нет (только целые дни)
Отрицательные значенияДаДа
Требует преобразования текстаДаДа
Читаемость формулыНизкаяВысокая

Пример использования:

=ДНИ(ДАТА(2026;12;31); ДАТА(2026;1;1))  // Вернёт 365
📊 Какой метод вы используете чаще?
Вычитание дат
Функцию ДНИ()
Другие функции
Не знаю, как считать

3. Рабочие дни: исключаем выходные и праздники

Если нужно посчитать только рабочие дни (исключая субботу и воскресенье), используйте функцию =ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]). Третий аргумент необязателен — это диапазон ячеек с датами праздников.

Алгоритм работы функции:

  1. Считает все дни между датами.
  2. Исключает субботы и воскресенья.
  3. Если указаны праздники, исключает их (даже если они попадают на будний день).

Пример с праздничными датами:

=ЧИСТРАБДНИ(A2; B2; $D$2:$D$10)

// Где D2:D10 — список праздников (например, 1 января, 8 марта и т.д.)

Как добавить динамические праздники?

Если праздники меняются ежегодно (например, Пасха), создайте отдельную таблицу с формулами для их расчёта. Например, для Пасхи в 2026 году: =ДАТА(2026;4;28) (дату уточняйте по церковному календарю).

Важный нюанс: функция ЧИСТРАБДНИ учитывает только полные рабочие дни. Если начальная или конечная дата попадает на выходной, она не исключается. Чтобы исправить это, оберните формулу в проверку:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5; ЧИСЛОВМЕСЯЦА(A2)=1); ЧИСТРАБДНИ(A2;B2;$D$2:$D$10)-1; ЧИСТРАБДНИ(A2;B2;$D$2:$D$10))

☑️ Подготовка данных для ЧИСТРАБДНИ

Выполнено: 0 / 4

4. Праздники и нестандартные выходные: расширенные техники

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

Шаг 1. Создайте таблицу с всеми нерабочими днями (выходные + праздники).
Шаг 2. Используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях Excel):

=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДАТАЗНАЧ($A$1:$A$100)-ДАТАЗНАЧ($A$1:$A$1))+1;2)<6); --(СЧЁТЕСЛИ($D$2:$D$10; СТРОКА(ДАТАЗНАЧ($A$1:$A$100)-ДАТАЗНАЧ($A$1:$A$1))+1)=0))

// Где A1:A100 — диапазон с датами, D2:D10 — список нерабочих дней

Для Excel 365 и Excel 2021 формула упрощается благодаря динамическим массивам:

=СУММ(--(ДЕНЬНЕД(ПОСЛЕДОВАТ(А2;В2-А2);2)<6); --(СЧЁТЕСЛИ(праздники; ПОСЛЕДОВАТ(А2;В2-А2))=0))

Пример для нестандартных выходных (пятница-суббота):

=ЧИСТРАБДНИ.МЕЖД(A2;B2;1;$D$2:$D$10)

// Аргумент "1" означает, что выходные — суббота и воскресенье (стандарт).

// Для пятницы-субботы используйте "11" (пятница=5, суббота=6 в числовом формате).

5. Учёт времени: когда важны не только дни, но и часы

Если вам нужно посчитать полные сутки с учётом времени (например, для расчёта оплаты по часам или логистических задержек), используйте комбинацию функций ЦЕЛОЕ() и МАКС():

Формула для подсчёта полных 24-часовых периодов:

=ЦЕЛОЕ(МАКС(0; B2-A2))

Расшифровка:

  • B2-A2 — разница между датами с учётом времени.
  • 🔢 МАКС(0; ...) — исключает отрицательные значения.
  • 📊 ЦЕЛОЕ() — округляет до полных суток вниз.

Пример: если A2 = 01.01.2026 23:00, а B2 = 02.01.2026 01:00, формула вернёт 0 (прошло менее 24 часов). Чтобы учитывать частичные сутки, используйте:

=ЕСЛИ(B2-A2<1; 1; ЦЕЛОЕ(B2-A2)+1)

6. Ошибки и их решения: почему Excel считает неправильно

Даже в простых расчётах Excel может выдавать неожиданные результаты. Рассмотрим типичные ошибки и способы их исправления:

⚠️ Внимание: Если формула возвращает #ЗНАЧ!, проверьте формат ячеек. Частая причина — текст вместо даты. Используйте =ДАТАЗНАЧ() или =ЗНАЧЕН() для преобразования.
ОшибкаПричинаРешение
#ЧИСЛО!Некорректная дата (например, 31 февраля)Используйте =ЕДАТА() для проверки
Результат на 1 день меньше/большеНеучёт граничных дат (включительно/исключительно)Добавьте +1 или -1 к формуле
#ИМЯ?Опечатка в названии функцииПроверьте синтаксис (например, ДНИ вместо ДНЕЙ)
Отрицательное значениеКонечная дата раньше начальнойИспользуйте =АБС() или поменяйте даты местами

Особый случай — даты до 1900 года. Excel хранит даты как количество дней с 1 января 1900 года (система 1900-date system). Для дат до 1900 года (например, исторические данные) используйте:

=ДАТАЗНАЧ("31.12.1899") - ДАТАЗНАЧ("01.01.1899")  // Вернёт 364
⚠️ Внимание: В Excel для Mac по умолчанию используется система 1904-date system (отсчёт с 1904 года). Чтобы избежать расхождений, проверьте настройки в Файл → Параметры → Дополнительно → При переходе на эту книгу: Использовать систему дат 1904 г..

FAQ: Ответы на частые вопросы

Как посчитать количество дней между сегодняшней датой и другой датой?

Используйте функцию =СЕГОДНЯ() в комбинации с ДНИ():

=ДНИ(СЕГОДНЯ(); ДАТА(2026;12;31))  // Дней до Нового года

Для обратного отсчёта (прошло дней с даты):

=ДНИ(ДАТА(2026;1;1); СЕГОДНЯ())
Можно ли посчитать дни без учёта конкретных дат (например, летние каникулы)?

Да. Создайте список исключаемых дат (например, с 1 июня по 31 августа) и используйте:

=ЧИСТРАБДНИ(A2;B2; $D$2:$D$10) - СУММПРОИЗВ(--(ДАТА(ГОД(A2);6;1)<=ПОСЛЕДОВАТ(А2;В2-А2)); --(ПОСЛЕДОВАТ(А2;В2-А2)<=ДАТА(ГОД(A2);8;31)))

Эта формула исключает все дни в июне-августе.

Как посчитать количество полных недель между датами?

Разделите разницу в днях на 7 и округлите вниз:

=ЦЕЛОЕ((B2-A2)/7)

Для учёта неполных недель (округление вверх):

=ОКРВВЕРХ((B2-A2)/7;0)
Почему формула =ДНИ() возвращает ошибку #ИМЯ?

Вероятные причины:

  1. Опечатка в названии функции (правильно: ДНИ, не ДНЕЙ или DAYS).
  2. Используется Excel до 2013 года, где этой функции нет. Замените на =B2-A2.
  3. Язык интерфейса Excel differs от русского. Переключитесь на русский или используйте английскую версию =DAYS().
Как автоматически обновлять расчёты при изменении дат?

Excel пересчитывает формулы автоматически, но если этого не происходит:

  • Проверьте настройки: Формулы → Параметры вычислений → Автоматически.
  • Для принудительного пересчёта нажмите F9.
  • Если используете СЕГОДНЯ(), обновите лист (она пересчитывается при открытии файла).