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

Вычитание дат в Microsoft Excel для расчета количества дней между ними — одна из самых востребованных операций при работе с временными интервалами. Если при попытке получить разницу между датами вы получаете ошибку #ЗНАЧ!, некорректный результат или просто не знаете, какую формулу применить — проблема кроется в формате ячеек или выборе неподходящего метода. Например, формула =B2-A2 вернет количество дней только если обе ячейки имеют формат Дата, а не Текст или Общий.

В этой статье разберем 5 рабочих способов подсчета дней между датами — от элементарного вычитания до учета рабочих дней с исключением праздников. Особое внимание уделим типичным ошибкам: почему Excel может показывать отрицательные значения, как исправить формат ячеек с датами "25.01.2026", преобразующихся в числа вроде 45301, и что делать, если даты хранятся как текст. Все примеры протестированы в Excel 2019–2023 и Excel Online.

1. Простое вычитание дат: базовый метод

Самый быстрый способ узнать, сколько дней прошло между двумя датами — вычесть одну дату из другой. Формула выглядит так:

=Конечная_дата - Начальная_дата

Например, если в ячейке A2 указана дата начала проекта 01.06.2026, а в B2 — дата окончания 15.06.2026, формула =B2-A2 вернет значение 14.

Критические нюансы метода:

  • 📅 Обе ячейки должны иметь формат Дата (проверьте через Главная → Формат → Формат ячеек). Если дата отображается как число (например, 45467), Excel воспринимает ее как количество дней с 01.01.1900.
  • ⚠️ При обратном порядке дат (начальная позже конечной) результат будет отрицательным. Чтобы избежать этого, используйте =ABS(B2-A2).
  • 🔄 Если даты введены как текст (например, через копирование из PDF), предварительно преобразуйте их с помощью ДАТАЗНАЧ().
ФормулаПримерРезультатПояснение
=B2-A215.06.2026 - 01.06.202614Количество полных дней между датами
=ABS(B2-A2)01.06.2026 - 15.06.202614Модуль разницы (всегда положительное число)
=ДАТАЗНАЧ("15.06.2026")-A2Текстовая дата - 01.06.202614Преобразование текста в дату
⚠️ Внимание: Если после вычитания вы видите результат вроде 45467 вместо ожидаемого количества дней, проверьте формат ячейки с результатом. Он должен быть Общий или Числовой, а не Дата.

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

Функция ДАТАРАЗН (англ. DATEDIF) позволяет вычислять разницу между датами не только в днях, но и в месяцах или годах. Синтаксис:

=ДАТАРАЗН(Начальная_дата; Конечная_дата; Единица_измерения)

Где Единица_измерения может принимать значения:

  • "d" — дни;
  • "m" — полные месяцы;
  • "y" — полные годы;
  • "yd" — дни без учета годов;
  • "md" — дни без учета месяцев и годов.

Пример: =ДАТАРАЗН("01.01.2026"; "31.12.2026"; "d") вернет 365 (или 366 для високосного года). Главное преимущество функции — корректная работа с частичными периодами. Например, =ДАТАРАЗН("01.01.2026"; "15.02.2026"; "m") даст 1 (полный месяц), а не 1.5.

Почему ДАТАРАЗН не документирована в Excel?

Функция ДАТАРАЗН унаследована из Lotus 1-2-3 и поддерживается в Excel для совместимости, но официально не документирована Microsoft. Несмотря на это, она работает во всех версиях, включая Excel 365.

⚠️ Внимание: В русских версиях Excel функция называется ДАТАРАЗН, а в английских — DATEDIF. Если формула не работает, проверьте язык интерфейса или используйте англоязычный вариант с точкой с запятой: =DATEDIF(A2;B2;"d").

3. Функция РАЗНДАТ: альтернатива для новых версий Excel

В Excel 2013 и новее появилась функция РАЗНДАТ (англ. DAYS), которая упрощает подсчет дней между датами. Синтаксис:

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

Пример: =РАЗНДАТ("01.01.2026"; "10.01.2026") вернет 9. Преимущества функции:

  • 🔹 Проще в использовании — не требует указания единицы измерения (всегда возвращает дни).
  • 🔹 Корректно обрабатывает текстовые даты (например, РАЗНДАТ("1-янв-2026"; B2)).
  • 🔹 Поддерживает массивы (можно передавать диапазоны ячеек).

Ограничение: РАЗНДАТ недоступна в Excel 2010 и более ранних версиях. Для них используйте ДАТАРАЗН или простое вычитание.

📊 Какой метод подсчета дней вы используете чаще?
Простое вычитание
Функция ДАТАРАЗН
Функция РАЗНДАТ
Другой вариант

4. Учет рабочих дней: функция ЧИСТРАБДНИ

Если нужно посчитать только рабочие дни (исключая субботу и воскресенье), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS):

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

Необязательный аргумент [Праздники] позволяет исключить дополнительные дни (например, государственные праздники). Пример:

  • 📊 =ЧИСТРАБДНИ("01.06.2026"; "15.06.2026") → вернет 11 (14 дней минус 2 выходных дня в субботу и воскресенье).
  • 📅 =ЧИСТРАБДНИ("01.06.2026"; "15.06.2026"; D2:D5), где D2:D5 содержит даты праздников (например, 12 июня), вернет 10.

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

1. Убедитесь, что даты в формате "Дата", а не "Текст"|false

2. Создайте отдельный столбец для праздников (если нужны)|false

3. Проверьте региональные настройки (в русских версиях разделитель — точка с запятой)|false

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

-->

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

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

ОшибкаПричинаРешение
#ЗНАЧ!Ячейка содержит текст вместо датыИспользуйте ДАТАЗНАЧ() или измените формат ячейки
Отрицательное числоНачальная дата позже конечнойПоменяйте местами аргументы или используйте ABS()
Результат в формате даты (например, 01.01.1900)Ячейка с результатом имеет формат "Дата"Измените формат на "Общий" или "Числовой"
#ИМЯ?Опечатка в названии функцииПроверьте синтаксис (например, ДАТАРАЗН, а не ДАТРАЗН)

Если даты хранятся как текст (например, после импорта из CSV), преобразуйте их с помощью:

=ДАТАЗНАЧ(LEFT(A2;10))

Где LEFT(A2;10) берет первые 10 символов из ячейки (подходит для формата ДД.ММ.ГГГГ).

6. Продвинутые сценарии: учет времени, временные зоны, динамические даты

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

  • 🕒 Разница в часах: =(B2-A2)*24. Пример: =("15.06.2026 18:00"-"15.06.2026 9:00")*249.
  • 📅 Динамическая дата "сегодня": =СЕГОДНЯ()-A2 (количество дней с заданной даты до текущего дня).
  • Учет временных зон: Если даты в разных часовых поясах, сначала приведите их к UTC с помощью ВРЕМЯ() или макросов.

Для автоматизации отчетов полезно создавать динамические диапазоны. Например, чтобы всегда показывать данные за последние 30 дней:

=ФИЛЬТР(A2:B100; (СЕГОДНЯ()-A2:A100)<=30)

Где A2:A100 — столбец с датами.

7. Практические примеры для бизнеса

Расчет дней между датами активно используется в бизнес-задачах. Вот 3 готовых решения:

  1. Срок выполнения заказа:
    =ЕСЛИ(RAZNДАТ(Дата_заказа; СЕГОДНЯ())>14; "Просрочено"; "В срок")

    Отмечает заказы, которые выполняются дольше 14 дней.

  2. Возраст клиента:
    =ДАТАРАЗН(Дата_рождения; СЕГОДНЯ(); "y") & " лет"

    Возвращает полные годы (например, "25 лет").

  3. Остаток дней до дедлайна:
    =МАКС(0; Дедлайн-СЕГОДНЯ())

    Показывает дни до завершения проекта (не уходит в минус).

Для визуализации результатов добавьте условное форматирование: Главная → Условное форматирование → Правила выделения ячеек → Меньше или равно → 0 (красный цвет для просроченных задач).

Частые вопросы (FAQ)

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

Используйте ссылки на листы. Например: =Лист2!B2-Лист1!A2. Убедитесь, что форматы дат на обоих листах совпадают.

Почему формула =B2-A2 возвращает ######?

Это означает, что столбец слишком узкий для отображения результата. Расширьте столбец или измените формат ячейки на "Общий".

Можно ли посчитать дни между датой и текущим временем?

Да, используйте =СЕГОДНЯ()-A2 для дней или =(СЕГОДНЯ()+ВРЕМЯ(ЧАС(ТДАТА());МИНУТЫ(ТДАТА());0))-A2 для учета часов.

Как исключить праздники из расчета рабочих дней?

Создайте список праздников в отдельном диапазоне (например, D2:D10) и укажите его в третьем аргументе ЧИСТРАБДНИ:

=ЧИСТРАБДНИ(A2; B2; D2:D10)

Работает ли РАЗНДАТ в Google Sheets?

Нет, в Google Таблицах используйте =DAYS(B2; A2) (аргументы переставлены местами) или простое вычитание.