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

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

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

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

📊 Для чего вам чаще всего нужно считать сутки в Excel?
Расчёт сроков выполнения задач
Анализ просрочек по платежам
Планирование проектов
Учёт рабочего времени сотрудников
Другое

1. Базовый метод: вычитание дат для подсчёта суток

Самый простой способ узнать, сколько суток прошло между двумя датами — вычесть одну дату из другой. Excel хранит даты как последовательные числа (начиная с 1 января 1900 года = 1), поэтому арифметические операции с ними работают интуитивно.

Допустим, у вас в ячейке A2 дата начала события (например, 15.05.2026), а в B2 — дата окончания (20.05.2026). Формула будет такой:

=B2-A2

Результат — 5 (полных суток между датами).

Но здесь есть 3 важных нюанса:

  1. Если ячейки отформатированы как текст, Excel вернёт ошибку #ЗНАЧ!. Проверьте формат: выделите ячейки → Главная → Формат → Формат ячеек → Дата.
  2. Формула учитывает все календарные дни, включая выходные и праздники. Если нужно только рабочие — читайте следующий раздел.
  3. Если дата окончания раньше начальной, результат будет отрицательным (например, -5). Чтобы избежать этого, используйте функцию АБС:
    =АБС(B2-A2)

⚠️ Внимание! Если в ячейках указано не только число, но и время (например, 15.05.2026 14:30), формула вернёт дробное значение (например, 5,25 — это 5 суток и 6 часов). Чтобы получить только целые сутки, оберните результат в функцию ЦЕЛОЕ:

=ЦЕЛОЕ(B2-A2)

2. Функция ДАТАРАЗН: гибкий расчёт с учётом месяцев и лет

Когда нужно посчитать сутки между датами с учётом неполных месяцев или лет, на помощь приходит функция ДАТАРАЗН (DATEDIF). Она скрыта в списке функций Excel, но работает стабильно. Синтаксис:

=ДАТАРАЗН(начальная_дата; конечная_дата; "D")

где "D" — код для вычисления разницы в днях.

Пример: если в A201.01.2026, а в B210.01.2026, формула вернёт 9 (а не 10, так как считаются полные сутки между датами).

Преимущества ДАТАРАЗН перед простым вычитанием:

  • 📅 Корректно обрабатывает переходы через месяцы/годы (например, разницу между 31.12.2023 и 02.01.2026).
  • 🔄 Можно использовать другие коды для расчёта месяцев ("M") или лет ("Y").
  • ⚡ Работает даже если даты указаны как текст (но лучше всё же привести их к формату даты).

⚠️ Внимание! Функция ДАТАРАЗН не учитывает время. Если в ячейках есть часы и минуты, их придётся обнулять с помощью ЦЕЛОЕ или ОКРВНИЗ.

Почему ДАТАРАЗН иногда возвращает неверный результат?

Если начальная дата позже конечной, функция вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, используйте конструкцию:

=ЕСЛИ(B2

Это гарантирует, что разница всегда будет положительной.

3. Подсчёт рабочих дней: функции ЧИСТРАБДНИ и РАБДЕНЬ

В бизнес-задачах часто требуется посчитать только рабочие дни, исключив выходные (субботу и воскресенье) и праздники. Для этого в Excel есть две функции:

  • ЧИСТРАБДНИ (NETWORKDAYS) — возвращает количество рабочих дней между двумя датами.
  • РАБДЕНЬ (WORKDAY) — прибавляет рабочие дни к заданной дате (полезно для планирования).

Синтаксис ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])

где [праздники] — необязательный диапазон с датами праздников (например, D2:D10).

Пример: если в A201.05.2026 (среда), в B210.05.2026 (пятница), а в D2:D3 указаны праздники 09.05.2026 и 10.05.2026, формула вернёт 6 рабочих дней (а не 8, как могло бы показаться).

Для функции РАБДЕНЬ пример такой:

=РАБДЕНЬ(A2; 5; D2:D3)

Эта формула вернёт дату, которая наступит через 5 рабочих дней после 01.05.2026, пропуская выходные и праздники из диапазона D2:D3.

⚠️ Внимание! По умолчанию ЧИСТРАБДНИ считает выходными субботу и воскресенье. Если у вас другой график (например, рабочий день — суббота, а выходной — пятница), используйте ЧИСТРАБДНИ.МЕЖД (NETWORKDAYS.INTL), где можно задать свои выходные дни.

Создайте список праздников в отдельном диапазоне|Проверьте формат дат (должен быть "Дата", а не "Текст")|Убедитесь, что начальная дата раньше конечной|Для нестандартных выходных используйте ЧИСТРАБДНИ.МЕЖД-->

4. Учёт времени: как посчитать сутки с часами и минутами

Если в ваших данных указаны не только даты, но и время (например, 15.05.2026 09:30), простые формулы могут дать неожиданный результат. Например, разница между 15.05.2026 23:00 и 16.05.2026 01:00 составит 0,083 (2 часа), хотя по календарю это уже следующие сутки.

Чтобы посчитать полные сутки с учётом времени, используйте комбинацию функций:

=ЦЕЛОЕ(B2-A2)

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

=ОКРУГЛВВЕРХ(B2-A2; 0)

Для более точных расчётов (например, в логистике, где важны даже часы) можно вывести результат в формате "X дней, Y часов". Формула:

=ЦЕЛОЕ(B2-A2) & " дней, " & ТЕКСТ(ОСТАТ(B2-A2;1)*24; "0") & " часов"

Пример результата: "2 дней, 5 часов".

⚠️ Внимание! Если в ячейках время указано без даты (например, 09:30), Excel воспримет его как долю суток (0,3958 для 9:30). Чтобы избежать путаницы, всегда комбинируйте дату и время в одном формате, например:

=ДАТА(2026;5;15)+ВРЕМЯ(9;30;0)

5. Продвинутые техники: Power Query и пользовательские функции

Для сложных задач (например, подсчёта суток в тысячах строк с учётом индивидуальных графиков работы) стандартных функций Excel может не хватить. В таких случаях поможет:

  • 🔧 Power Query — инструмент для преобразования данных. Позволяет создать столбец с разницей в днях между датами, применить фильтры (например, исключить выходные) и даже подгрузить данные о праздниках из внешних источников.
  • 📝 Пользовательские функции на VBA. Например, функция для подсчёта суток с учётом сменного графика (когда выходные плавающие).

Пример кода на VBA для подсчёта рабочих дней с кастомными выходными:

Function CustomWorkDays(start_date As Date, end_date As Date, Optional holidays As Range) As Long

Dim day_count As Long, i As Long

day_count = 0

For i = start_date To end_date

' Проверяем, что день не суббота (7) и не воскресенье (1)

If Weekday(i, vbSunday) <> 1 And Weekday(i, vbSunday) <> 7 Then

' Проверяем, что день не в списке праздников

If Not holidays Is Nothing Then

If Application.WorksheetFunction.CountIf(holidays, i) = 0 Then

day_count = day_count + 1

End If

Else

day_count = day_count + 1

End If

End If

Next i

CustomWorkDays = day_count

End Function

Чтобы использовать эту функцию:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel и используйте функцию как обычную: =CustomWorkDays(A2; B2; D2:D10).

⚠️ Внимание! Пользовательские функции VBA работают только в версии Excel для Windows. В Excel Online или на Mac они могут не поддерживаться.

6. Типичные ошибки и как их избежать

Даже в простых расчётах с датами пользователи часто сталкиваются с ошибками. Вот TOP-5 проблем и их решения:

Ошибка Причина Решение
#ЗНАЧ! Ячейки отформатированы как текст, а не дата. Примените ДАТАЗНАЧ или измените формат ячеек на "Дата".
Результат на 1 день меньше ожидаемого Формула считает разницу между датами, а не количество полных суток. Используйте =B2-A2+1 или ДАТАРАЗН с кодом "D".
Отрицательное значение Дата окончания раньше начальной. Оберните формулу в АБС или поменяйте местами ячейки.
Некорректный учёт выходных Функция ЧИСТРАБДНИ не учитывает региональные праздники. Добавьте список праздников в третий аргумент функции.
Дробные значения (например, 3,5) В ячейках указано время вместе с датой. Используйте ЦЕЛОЕ или ОКРВНИЗ для округления.

⚠️ Внимание! Если вы копируете даты из внешних источников (например, с сайтов или PDF), они часто вставляются как текст. Всегда проверяйте формат с помощью функции ТИП: =ТИП(A2)=1 вернёт ИСТИНА, если в ячейке дата.

7. Практические примеры: шаблоны для скачивания

Чтобы сэкономить время, мы подготовили 3 готовых шаблона для расчёта суток в Excel. Скачайте их и адаптируйте под свои задачи:

  • 📥 Шаблон 1: Простой калькулятор разницы в днях (с учётом отрицательных значений). Ссылка на скачивание.
  • 📥 Шаблон 2: Расчёт рабочих дней с учётом праздников (для России, Украины, Казахстана). Ссылка на скачивание.
  • 📥 Шаблон 3: Табель учёта рабочего времени с автоматическим подсчётом отработанных суток. Ссылка на скачивание.

В каждом шаблоне есть инструкция по настройке и примеры формул. Например, в шаблоне №2 уже загружены праздничные даты до 2026 года — вам останется только обновить их под свой регион.

Если вам нужно посчитать сутки для конкретной задачи (например, сроки доставки или время аренды), оставьте описание в комментариях — мы добавим пример в статью!

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

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

Используйте функцию СЕГОДНЯ:

=ЦЕЛОЕ(СЕГОДНЯ()-A2)

где A2 — ячейка с прошлой датой. Для рабочих дней:

=ЧИСТРАБДНИ(A2; СЕГОДНЯ())
Почему формула =B2-A2 возвращает 43100 вместо разницы в днях?

Это значит, что ячейки отформатированы как числа, а не даты. Excel хранит даты как количество дней с 1 января 1900 года. Чтобы исправить:

  1. Выделите ячейки с датами.
  2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Дата и нужный формат.
Как посчитать сутки с учётом только будних дней (пн-пт)?

Используйте ЧИСТРАБДНИ.МЕЖД с параметром для выходных:

=ЧИСТРАБДНИ.МЕЖД(A2; B2; 11)

где 11 — код для выходных субботы и воскресенья. Для других комбинаций (например, пятница и суббота) используйте код 17.

Можно ли посчитать сутки в Google Sheets?

Да, все описанные функции работают и в Google Таблицах, за исключением Power Query (там используется Apps Script). Синтаксис идентичный, но названия функций на английском:

  • =DAYS(B2, A2) — аналог ДАТАРАЗН.
  • =NETWORKDAYS(A2, B2) — аналог ЧИСТРАБДНИ.
Как посчитать сутки между датами в разных часовых поясах?

Excel не учитывает часовые пояса при расчёте разницы в днях. Чтобы корректно сравнить даты из разных регионов:

  1. Приведите обе даты к одному часовому поясу (например, UTC).
  2. Используйте формулу с учётом времени:
    =ЦЕЛОЕ((B2 + (час_пояса_B/24)) - (A2 + (час_пояса_A/24)))

    где час_пояса_A и час_пояса_B — разница с UTC в часах (например, для Москвы это +3).