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

Расчёт количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel. Будь то сроки выполнения проектов, возраст сотрудников, продолжительность аренды или анализ временных интервалов — умение быстро вычислять разницу в днях экономит часы ручной работы. Но даже опытные пользователи иногда путаются: как учесть только рабочие дни? Как исключить праздники? Или почему формула выдаёт ошибку #ЗНАЧ! вместо числа?

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

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

Почему простое вычитание дат не всегда работает

На первый взгляд, чтобы посчитать дни между двумя датами, достаточно вычесть одну из другой: =B2-A2. И в большинстве случаев этот метод сработает. Но есть 3 подводных камня, о которых многие не знают:

1. Формат ячеек. Если ячейка с датой отформатирована как текст (например, после импорта из CSV), Excel воспримет её как строку, а не как дату. Вычитание текста из текста вернёт ошибку. Чтобы проверить формат, выделите ячейку и посмотрите на панель инструментов: там должно быть указано Дата или Общий, но не Текст.

2. Системная дата 1900 vs 1904. В Excel для Windows и Mac используется разная стартовая точка отсчёта: 1 января 1900 года или 1 января 1904. Это может сбивать расчёты на 4 года (1462 дня). Проверить настройку можно в Файл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1904.

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

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 1: Базовый расчёт дней (функция ДАТАРАЗН)

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

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

Аргумент единица_измерения определяет, что именно считать:

  • 📅 "D" — количество полных дней между датами.
  • 📆 "M" — количество полных месяцев.
  • 🗓️ "Y" — количество полных лет.
  • 🔄 "YM" — месяцы без учёта лет (например, разница между 15.01.2023 и 10.03.2023 вернёт 1, а не 2).

Пример: чтобы посчитать дни между 01.01.2026 и 31.12.2026, используйте:

=ДАТАРАЗН("01.01.2026"; "31.12.2026"; "D")

Результат: 365 (или 366 для високосного года).

Ограничение: ДАТАРАЗН не учитывает рабочие/выходные дни. Для этого нужны другие функции (см. следующий раздел).

Способ 2: Рабочие дни без праздников (функция ЧИСТРАБДНИ)

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

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

Аргумент [праздники] необязателен — это диапазон ячеек с датами праздничных дней. Например, если в ячейках D2:D10 перечислены государственные праздники, формула примет вид:

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

Пример расчёта рабочих дней между 01.01.2026 и 10.01.2026 (с учётом новогодних каникул):

Начальная датаКонечная датаПраздникиФормулаРезультат
01.01.202610.01.202601.01–08.01=ЧИСТРАБДНИ(A2;B2;D2:D9)2
15.01.202620.01.2026=ЧИСТРАБДНИ(A3;B3)4

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

Как добавить праздники автоматически?

Если праздники повторяются ежегодно (например, 1 января), создайте отдельный лист с формулами типа =ДАТА(ГОД(СЕГОДНЯ());1;1) для автоматического обновления дат. Затем ссылайтесь на этот диапазон в ЧИСТРАБДНИ.

Способ 3: Рабочие дни с нестандартными выходными

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

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

Аргумент [выходные] — это число или строка, где каждый символ обозначает день недели (начиная с понедельника):

  • 🔢 1 — выходной.
  • 🔡 0 — рабочий день.
  • 📜 Строка "0000011" — выходные суббота и воскресенье (стандартный график).
  • 📜 Строка "0000101" — выходные пятница и суббота (например, для мусульманских стран).

Пример: посчитаем рабочие дни между 01.05.2026 и 10.05.2026 для графика с выходными в пятницу и субботу:

=ЧИСТРАБДНИ.МЕЖД("01.05.2026"; "10.05.2026"; "0000101")

Результат: 6 дней (исключены 3.05, 4.05, 9.05, 10.05).

📌 Убедитесь, что даты в формате Дата, а не текст

📌 Создайте список праздников в отдельном диапазоне

📌 Проверьте код выходных (например, "0000011" для стандартного графика)

📌 Используйте абсолютные ссылки на праздники (например, $D$2:$D$10)

-->

Способ 4: Динамический календарь с условным форматированием

Если вам нужно не только посчитать дни, но и визуализировать просроченные сроки или приближающиеся дедлайны, сочетание формул с условным форматированием станет мощным инструментом. Например, можно автоматически подсвечивать ячейки красным, если до конечной даты осталось менее 5 рабочих дней.

Алгоритм действий:

  1. Создайте столбец с формулой для расчёта оставшихся дней:
    =ЧИСТРАБДНИ(СЕГОДНЯ(); B2)
  2. Выделите ячейки с результатом и откройте Условное форматирование → Создать правило → Использовать формулу....
  3. Введите формулу для подсветки:
    =И(B2>СЕГОДНЯ(); ЧИСТРАБДНИ(СЕГОДНЯ(); B2)<5)
  4. Задайте красный цвет заливки и нажмите ОК.

Теперь все задачи, у которых осталось менее 5 рабочих дней, будут выделены красным. Аналогично можно настроить жёлтую подсветку для предупреждения за 10 дней и зелёную — для выполненных задач.

Способ 5: Расчёт дней с учётом времени (дробные значения)

Если в ваших данных хранятся не только даты, но и время (например, 15.05.2026 14:30), простое вычитание даст дробное число, где целая часть — дни, а дробная — доля дня. Чтобы разделить дни и часы, используйте:

  • 📅 Для целых дней: =ЦЕЛОЕ(B2-A2).
  • ⏰ Для часов: =ОСТАТ((B2-A2);1)*24.
  • ⏱️ Для минут: =ОСТАТ((B2-A2)*1440;1) (1440 = 24 часа × 60 минут).

Пример: разница между 15.05.2026 08:00 и 17.05.2026 16:30:

=ЦЕЛОЕ("17.05.2026 16:30"-"15.05.2026 08:00")

Вернёт 2 (полных дня), а формула для часов:

=ОСТАТ(("17.05.2026 16:30"-"15.05.2026 08:00");1)*24

Вернёт 8,5 (часов).

⚠️

Внимание: Если в расчётах важны часы и минуты, убедитесь, что ячейки отформатированы как Дата с включённым временем. Для этого выделите ячейки → Формат ячеек → Числовые форматы → Дата и выберите формат с временем (например, 14.03.2012 13:30).

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

Даже простые формулы с датами могут выдавать ошибки. Вот топ-5 проблем и их решения:

1. Ошибка #ЗНАЧ!
Причина: одна или обе даты в текстовом формате. Решение: преобразуйте текст в дату с помощью ДАТАЗНАЧ():

=ДАТАРАЗН(ДАТАЗНАЧ("01.01.2026"); ДАТАЗНАЧ("10.01.2026"); "D")

2. Отрицательное количество дней
Причина: конечная дата раньше начальной. Решение: используйте АБС() для модуля:

=АБС(ДАТАРАЗН(A2; B2; "D"))

3. Некорректный результат для високосных годов
Причина: Excel считает 29 февраля 1900 года (которого не было). Решение: обновите систему дат в параметрах или используйте ДАТА() для явного указания года.

4. Функция не обновляется автоматически
Причина: в настройках отключён автоматический пересчёт. Решение: нажмите Формулы → Вычислить лист или включите Автоматический пересчёт в Параметры → Формулы.

5. Праздники не учитываются
Причина: диапазон с праздниками не зафиксирован абсолютными ссылками. Решение: используйте $D$2:$D$10 вместо D2:D10.

⚠️

Внимание: Если вы копируете формулы между файлами, проверьте, что ссылки на праздники не сбились. Например, формула =ЧИСТРАБДНИ(A2; B2; Лист2!D2:D10) при копировании в другой файл может указать на несуществующий лист.

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

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

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

=ДАТАРАЗН(СЕГОДНЯ(); B2; "D")

Если нужны рабочие дни:

=ЧИСТРАБДНИ(СЕГОДНЯ(); B2)
Можно ли посчитать дни между датами в Google Sheets?

Да, все описанные функции работают и в Google Таблицах, включая DATEDIF, NETWORKDAYS и NETWORKDAYS.INTL. Синтаксис идентичен.

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

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

=ЧИСТРАБДНИ.МЕЖД(A2; B2; "0010001")
Почему формула возвращает ###### вместо числа?

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

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

Разделите количество дней на 7 и округлите вниз:

=ЦЕЛОЕ(ДАТАРАЗН(A2; B2; "D")/7)