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

Формула =DATEDIF(А1;B1;"d") мгновенно вернет количество дней между датами в ячейках Excel, но только если обе даты введены корректно — без текста, пробелов или неверного формата. Ошибка #ЧИСЛО! или неверный результат (например, отрицательное число) означает, что программа воспринимает ваши данные как текст, а не как дату. Проблема в 80% случаев решается преобразованием ячеек в формат Дата через меню Главная → Числовой формат.

В Excel расчет интервала между датами зависит от задачи: нужны ли календарные дни (включая выходные), только рабочие дни (без суббот/воскресений) или точные часы/минуты. Например, для расчета срока выполнения задачи по трудовому договору потребуется исключить праздники, а для медицинских анализов — учесть только полные 24-часовые периоды. Далее разберем все варианты с формулами, которые работают в Excel 2010–2023 и Excel Online.

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

Самый простой способ — вычесть из поздней даты раннюю. Excel автоматически преобразует разницу в количество дней, так как хранит даты в виде последовательных чисел (начиная с 1 для 01.01.1900). Формула:

=B1-A1

Где B1 — ячейка с конечной датой, A1 — с начальной. Например, для интервала между 15.05.2026 и 20.05.2026 результат будет 5.

  • ✅ Работает во всех версиях Excel, включая мобильную.
  • ✅ Не требует дополнительных функций.
  • ⚠️ Возвращает отрицательное число, если даты перепутаны местами.
  • ❌ Не учитывает рабочие/выходные дни.
⚠️ Внимание: Если после вычитания отображается дата (например, 05.01.1900), а не число — измените формат ячейки с результатом на Общий или Числовой.

2. Функция РАЗНДАТ (DATEDIF): скрытые возможности

Функция =РАЗНДАТ(нач_дата;кон_дата;"d") (или =DATEDIF в английской версии) специально предназначена для расчета разницы между датами. Её преимущество — поддержка дополнительных параметров:

  • "d" — дни (полный интервал).
  • 📅 "m" — полные месяцы.
  • 🗓️ "y" — полные годы.
  • 🔄 "yd" — дни с начала года (игнорируя годы).
  • 📊 "md" — дни с начала месяца (игнорируя месяцы и годы).

Пример: =РАЗНДАТ("10.03.2026";"15.04.2026";"d") вернет 36 (дней между датами). Аналогичная формула с параметром "m" покажет 1 (полный месяц).

Параметр Пример формулы Результат для дат
10.03.2026 – 15.04.2026
"d" =РАЗНДАТ(A1;B1;"d") 36
"m" =РАЗНДАТ(A1;B1;"m") 1
"y" =РАЗНДАТ(A1;B1;"y") 0
"yd" =РАЗНДАТ(A1;B1;"yd") 5 (дней в апреле)

Функция РАЗНДАТ не отображается в мастер-функций Excel (её нет в списке), но работает во всех версиях. Введите её вручную.

📊 Какой параметр функции РАЗНДАТ вы используете чаще?
Дни ("d")
Месяцы ("m")
Годы ("y")
Другие ("yd", "md")

3. Расчет рабочих дней (без выходных)

Для исключения суббот и воскресений используйте функцию =ЧИСТРАБДНИ(нач_дата;кон_дата) (или =NETWORKDAYS). Она возвращает количество рабочих дней между двумя датами, учитывая стандартную 5-дневную рабочую неделю.

Пример: =ЧИСТРАБДНИ("01.05.2026";"10.05.2026") вернет 7 (из 10 дней исключены 2 субботы и 1 воскресенье).

  • 📅 Дополнительный параметр: Можно указать диапазон праздников. Например, =ЧИСТРАБДНИ(A1;B1;D1:D5), где D1:D5 — ячейки с датами праздников.
  • ⚠️ Если праздники не указаны, они не исключаются автоматически!
  • 🔄 Для обратного расчета (даты по количеству рабочих дней) используйте =РАБДЕНЬ.
⚠️ Внимание: В Excel Online функция ЧИСТРАБДНИ может не поддерживать массив праздников — проверяйте результат.
Как добавить праздники в расчет?

1. Создайте список дат праздников в отдельном столбце (например, D1:D10).
2. В формуле укажите этот диапазон третьим аргументом: =ЧИСТРАБДНИ(A1;B1;D1:D10).
3. Убедитесь, что ячейки с праздниками имеют формат Дата.
4. Для динамического обновления используйте именованный диапазон (меню Формулы → Присвоить имя).

4. Учет точного времени (часы, минуты)

Если нужна разница не только в днях, но и в часах/минутах, используйте формулу:

=B1-A1

...но предварительно измените формат ячейки с результатом на Общий или Числовой. Excel отобразит дробное число, где:

  • 🔢 Целая часть — количество полных дней.
  • ⏱️ Дробная часть — доля дня (например, 0,5 = 12 часов).

Для преобразования дроби в часы умножьте результат на 24:

=(B1-A1)*24

Пример: если между 10.05.2026 14:00 и 11.05.2026 10:00 прошло 1,083 дня, то в часах это 26 (1*24 + 0,083*24 ≈ 26).

Ячейки с датами имеют формат Дата или Длинный формат даты|Время указано с точностью до часов/минут (например, 14:30, а не 14:00)|Формат ячейки с результатом изменен на Общий или [ч]:мм|Проверено отсутствие текста в ячейках (например, "с 10 мая")

-->

5. Ошибки и их исправление

Частые проблемы при расчете дней между датами и способы их решения:

Ошибка Причина Решение
#ЧИСЛО! Некорректный формат даты (текст, пробелы). Используйте =ДАТАЗНАЧ(A1) для преобразования текста в дату.
Отрицательное число Конечная дата раньше начальной. Поменяйте ячейки местами или используйте =АБС(B1-A1).
Неверный результат (например, 40000) Ячейки отформатированы как даты, но содержат числа. Измените формат на Общий и проверьте значения.
#ИМЯ? Опечатка в названии функции (например, РАЗНДАТА вместо РАЗНДАТ). Проверьте синтаксис. Функция РАЗНДАТ пишется без буквы А на конце.

Для диагностики формата ячейки используйте функцию =ТИП(A1):

  • 1 — число (включая даты).
  • 2 — текст.
  • 16 — ошибка.

6. Продвинутые сценарии

Для сложных расчетов комбинируйте функции:

  • 📊 Дни до конца месяца:
    =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;1)-A1

    Вернет количество дней от даты в A1 до последнего дня месяца.

  • 🗓️ Количество полных недель:
    =ЦЕЛОЕ((B1-A1)/7)
  • Процент выполнения срока:
    =((СЕГОДНЯ()-A1)/(B1-A1))*100

    Где A1 — дата начала, B1 — дата окончания.

Для динамических отчетов используйте =СЕГОДНЯ() вместо фиксированной даты. Например, формула =РАЗНДАТ(A1;СЕГОДНЯ();"d") будет автоматически обновлять количество дней с даты в A1 до текущего дня.

7. Альтернативы: Power Query и VBA

Если стандартных функций недостаточно, используйте:

  • 🔧 Power Query: Импортируйте данные в Power Query (меню Данные → Получить данные) и создайте пользовательский столбец с формулой на языке M:
    = Duration.Days([EndDate] - [StartDate])
  • 🤖 VBA: Для автоматизации создайте макрос:
    Function DaysBetween(d1 As Date, d2 As Date) As Long
    

    DaysBetween = Abs(d2 - d1)

    End Function

    Затем вызывайте его в ячейке как =DaysBetween(A1;B1).

Эти методы полезны для обработки больших массивов данных (тысячи строк) или когда требуется интеграция с внешними источниками.

FAQ: Частые вопросы

Как посчитать дни между датами, если одна из них пустая?

Используйте функцию =ЕСЛИ для проверки:

=ЕСЛИ(И(NOT(ISBLANK(A1));NOT(ISBLANK(B1))); B1-A1; "Данные неполные")

Эта формула вернет разницу только если обе ячейки заполнены.

Почему функция РАЗНДАТ возвращает ошибку в Excel Online?

Excel Online поддерживает РАЗНДАТ, но может требовать английский синтаксис (DATEDIF). Попробуйте:

=DATEDIF(A1,B1,"d")

Также проверьте региональные настройки (меню Файл → Параметры → Язык).

Как исключить конкретные дни недели (например, пятницу)?

Используйте комбинацию ЧИСТРАБДНИ и ДЕНЬНЕД:

=ЧИСТРАБДНИ(A1;B1)-СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(НЕПРЯМ($A$1:$A$100));2)=5);1)

Здесь 5 — код пятницы (1=воскресенье, 2=понедельник,...).

Можно ли посчитать дни между датами в Google Таблицах?

Да, синтаксис аналогичен Excel:

=DATEDIF(A1;B1;"d")

или

=B1-A1

Для рабочих дней используйте =NETWORKDAYS(A1;B1).

Как посчитать дни с учетом полурабочих дней (например, суббота — короткий день)?

Создайте пользовательскую функцию на VBA:

Function CustomWorkDays(d1 As Date, d2 As Date) As Long

Dim days As Long, i As Date

days = 0

For i = d1 To d2

Select Case Weekday(i, vbMonday)

Case 1 To 5: days = days + 1 ' Пн-Пт

Case 6: days = days + 0.5 ' Суббота

End Select

Next i

CustomWorkDays = days

End Function

Затем вызывайте её как =CustomWorkDays(A1;B1).