Работа с датами и временем в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров проектов. Часто требуется посчитать количество суток между двумя датами: для расчёта сроков выполнения задач, определении просрочек, анализа временных интервалов или планирования графиков. Казалось бы, что может быть проще? Но на практике даже опытные пользователи сталкиваются с нюансами: как учесть только рабочие дни, исключить праздники, или корректно обработать время вместе с датой.
В этой статье мы разберём 5 проверенных способов подсчёта суток в Excel — от элементарных формул до продвинутых техник с использованием функций ДАТАРАЗН, ЧИСТРАБДНИ и даже Power Query. Вы узнаете, как избежать типичных ошибок (например, когда Excel вдруг начинает отнимать даты как текст), как работать с отрицательными значениями и почему иногда результат отличается на ±1 день. А в конце — готовые шаблоны для скачивания и ответы на частые вопросы.
Если вам нужно быстро посчитать разницу в днях между двумя датами — переходите сразу к разделу с формулой =B2-A2. Для сложных расчётов (например, с учётом выходных) читайте про функции ЧИСТРАБДНИ и РАБДЕНЬ. И не забудьте проверить наш опрос ниже — интересно, какие задачи с датами вы решаете чаще всего!
1. Базовый метод: вычитание дат для подсчёта суток
Самый простой способ узнать, сколько суток прошло между двумя датами — вычесть одну дату из другой. Excel хранит даты как последовательные числа (начиная с 1 января 1900 года = 1), поэтому арифметические операции с ними работают интуитивно.
Допустим, у вас в ячейке A2 дата начала события (например, 15.05.2026), а в B2 — дата окончания (20.05.2026). Формула будет такой:
=B2-A2
Результат — 5 (полных суток между датами).
Но здесь есть 3 важных нюанса:
- Если ячейки отформатированы как текст, Excel вернёт ошибку
#ЗНАЧ!. Проверьте формат: выделите ячейки →Главная → Формат → Формат ячеек → Дата. - Формула учитывает все календарные дни, включая выходные и праздники. Если нужно только рабочие — читайте следующий раздел.
- Если дата окончания раньше начальной, результат будет отрицательным (например,
-5). Чтобы избежать этого, используйте функциюАБС:=АБС(B2-A2)
⚠️ Внимание! Если в ячейках указано не только число, но и время (например, 15.05.2026 14:30), формула вернёт дробное значение (например, 5,25 — это 5 суток и 6 часов). Чтобы получить только целые сутки, оберните результат в функцию ЦЕЛОЕ:
=ЦЕЛОЕ(B2-A2)
2. Функция ДАТАРАЗН: гибкий расчёт с учётом месяцев и лет
Когда нужно посчитать сутки между датами с учётом неполных месяцев или лет, на помощь приходит функция ДАТАРАЗН (DATEDIF). Она скрыта в списке функций Excel, но работает стабильно. Синтаксис:
=ДАТАРАЗН(начальная_дата; конечная_дата; "D")
где "D" — код для вычисления разницы в днях.
Пример: если в A2 — 01.01.2026, а в B2 — 10.01.2026, формула вернёт 9 (а не 10, так как считаются полные сутки между датами).
Преимущества ДАТАРАЗН перед простым вычитанием:
- 📅 Корректно обрабатывает переходы через месяцы/годы (например, разницу между
31.12.2023и02.01.2026). - 🔄 Можно использовать другие коды для расчёта месяцев (
"M") или лет ("Y"). - ⚡ Работает даже если даты указаны как текст (но лучше всё же привести их к формату даты).
⚠️ Внимание! Функция
Если начальная дата позже конечной, функция вернёт ошибку Это гарантирует, что разница всегда будет положительной.ДАТАРАЗН не учитывает время. Если в ячейках есть часы и минуты, их придётся обнулять с помощью ЦЕЛОЕ или ОКРВНИЗ.
Почему ДАТАРАЗН иногда возвращает неверный результат?
#ЧИСЛО!. Чтобы избежать этого, используйте конструкцию:=ЕСЛИ(B2
3. Подсчёт рабочих дней: функции ЧИСТРАБДНИ и РАБДЕНЬ
В бизнес-задачах часто требуется посчитать только рабочие дни, исключив выходные (субботу и воскресенье) и праздники. Для этого в Excel есть две функции:
ЧИСТРАБДНИ(NETWORKDAYS) — возвращает количество рабочих дней между двумя датами.РАБДЕНЬ(WORKDAY) — прибавляет рабочие дни к заданной дате (полезно для планирования).
Синтаксис ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
где [праздники] — необязательный диапазон с датами праздников (например, D2:D10).
Пример: если в A2 — 01.05.2026 (среда), в B2 — 10.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
Чтобы использовать эту функцию:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Вернитесь в 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 года. Чтобы исправить:
- Выделите ячейки с датами.
- Нажмите
Ctrl + 1(или правая кнопка →Формат ячеек). - Выберите категорию
Датаи нужный формат.
Как посчитать сутки с учётом только будних дней (пн-пт)?
Используйте ЧИСТРАБДНИ.МЕЖД с параметром для выходных:
=ЧИСТРАБДНИ.МЕЖД(A2; B2; 11)
где 11 — код для выходных субботы и воскресенья. Для других комбинаций (например, пятница и суббота) используйте код 17.
Можно ли посчитать сутки в Google Sheets?
Да, все описанные функции работают и в Google Таблицах, за исключением Power Query (там используется Apps Script). Синтаксис идентичный, но названия функций на английском:
=DAYS(B2, A2)— аналогДАТАРАЗН.=NETWORKDAYS(A2, B2)— аналогЧИСТРАБДНИ.
Как посчитать сутки между датами в разных часовых поясах?
Excel не учитывает часовые пояса при расчёте разницы в днях. Чтобы корректно сравнить даты из разных регионов:
- Приведите обе даты к одному часовому поясу (например, UTC).
- Используйте формулу с учётом времени:
=ЦЕЛОЕ((B2 + (час_пояса_B/24)) - (A2 + (час_пояса_A/24)))где
час_пояса_Aичас_пояса_B— разница с UTC в часах (например, для Москвы это+3).