Формула =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 (её нет в списке), но работает во всех версиях. Введите её вручную.
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 LongDaysBetween = 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).