Как считать количество дней в Excel: от базовых формул до продвинутых расчётов

Работа с датами в Microsoft Excel — одна из самых востребованных задач среди пользователей. Нужно ли вам рассчитать срок выполнения проекта, определить возраст клиента или проанализировать временные промежутки между событиями — умение правильно считать дни сэкономит часы ручной работы. Но как это сделать быстро и без ошибок?

Многие ошибочно полагают, что для подсчёта дней достаточно простого вычитания одной даты из другой. На практике же всё сложнее: учитываются выходные, праздники, рабочие дни, а иногда и временные зоны. В этой статье мы разберём все возможные сценарии — от элементарных операций до автоматизированных решений с учетом производственного календаря.

Вы узнаете:

  • 🔹 Как вычесть даты и получить количество дней (включая формулу для "человеческого" отображения)
  • 🔹 Почему Excel иногда показывает ошибку #ЗНАЧ! при работе с датами и как это исправить
  • 🔹 Как посчитать только рабочие дни, исключив выходные и праздники
  • 🔹 Продвинутые функции для расчёта временных интервалов с точностью до часов и минут
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

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

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

Пример формулы:

=B2-A2

где A2 — ячейка с начальной датой, а B2 — с конечной. Результат будет целым числом (например, 35 означает 35 дней).

⚠️ Внимание: Если одна из ячеек содержит текст вместо даты (например, "01.05.2026" введён как текст), Excel вернёт ошибку #ЗНАЧ!. Чтобы исправить это, используйте функцию =ДАТАЗНАЧ():

=B2-ДАТАЗНАЧ(A2)

2. Функция ДНИ: когда нужна точность

Для более надёжных расчётов используйте специализированную функцию =ДНИ() (англ. DAYS). Она возвращает количество дней между двумя датами и игнорирует форматирование:

=ДНИ(конечная_дата; начальная_дата)

Пример:

=ДНИ("15.06.2026"; "01.05.2026")

вернёт 45 (дней между 1 мая и 15 июня 2026 года).

Преимущества функции ДНИ:

  • 🔸 Работает даже если даты введены как текст (автоматически преобразует их)
  • 🔸 Поддерживает ссылки на ячейки и прямые значения (как в примере выше)
  • 🔸 Меньше шансов получить ошибку #ЗНАЧ! по сравнению с простым вычитанием
Почему функция называется ДНИ, а не РАЗНИЦА_ДАТ?

Исторически в ранних версиях Excel для этой задачи использовалась функция DATEDIF, но она имела ограничения. Функция DAYS (ДНИ) была введена в Excel 2013 как более универсальное решение.

3. Подсчёт рабочих дней: исключаем выходные

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

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

Пример без учёта праздников:

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026")

вернёт 23 (в мае 2026 года 23 рабочих дня при 5-дневной рабочей неделе).

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

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; {"01.05.2026"; "09.05.2026"})

Теперь результат будет 21 (минус 1 и 9 мая).

⚠️ Внимание: Функция ЧИСТРАБДНИ считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, выходной — пятница), используйте =ЧИСТРАБДНИ.INTL() с параметром weekend.
Функция Назначение Пример Результат
ДНИ Все дни между датами =ДНИ("10.05.2026";"01.05.2026") 9
ЧИСТРАБДНИ Рабочие дни (без выходных) =ЧИСТРАБДНИ("01.05.2026";"10.05.2026") 7
РАЗНДАТ Годы/месяцы/дни по отдельности =РАЗНДАТ("01.01.2023";"01.01.2026";"y") 1

4. Расчёт лет, месяцев и дней по отдельности

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

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

Коды единиц измерения:

  • 📅 "y" — полные годы
  • 📅 "m" — полные месяцы
  • 📅 "d" — дни (игнорируя годы и месяцы)
  • 📅 "ym" — месяцы без учёта лет
  • 📅 "md" — дни без учёта месяцев и лет

Пример: чтобы узнать, сколько лет, месяцев и дней прошло с 01.01.2020 по 15.06.2026, используйте три формулы:

=РАЗНДАТ("01.01.2020";"15.06.2026";"y") & " лет, " &

РАЗНДАТ("01.01.2020";"15.06.2026";"ym") & " месяцев и " &

РАЗНДАТ("01.01.2020";"15.06.2026";"md") & " дней"

Результат: "4 лет, 5 месяцев и 14 дней".

5. Продвинутые сценарии: временные зоны и точные интервалы

Если вам нужно учитывать не только даты, но и время (например, для расчёта длительности звонков или производственных процессов), используйте комбинацию функций ДАТАВРЕМЯ() и арифметических операций.

Пример: расчёт интервала между 01.05.2026 14:30 и 03.05.2026 09:15:

=("03.05.2026 09:15"-"01.05.2026 14:30")*24

Результат: 42.75 (часов). Чтобы преобразовать в дни с десятичной частью:

=("03.05.2026 09:15"-"01.05.2026 14:30")

Результат: 1.78125 (дней).

Для работы с временными зонами:

  • 🌍 Преобразуйте время к UTC с помощью =ДАТАВРЕМЯ() + время/24
  • 🌍 Используйте =ЧАС(), =МИНУТЫ() для извлечения компонентов времени
  • 🌍 В Power Query можно автоматически корректировать временные зоны при импорте данных

Убедитесь, что даты введены как даты (не текст)|Проверьте формат ячеек (должен быть "Дата" или "Общий")|Учтите летнее/зимнее время, если работаете с временными метками|Используйте 24-часовой формат для избежания ошибок с AM/PM-->

6. Автоматизация: динамические диапазоны и Power Query

Для регулярных отчётов с подсчётом дней настройте динамические диапазоны или используйте Power Query:

Пример 1: Подсчёт дней между сегодняшней датой и датой в столбце A:

=СЕГОДНЯ()-A2

Пример 2: Автоматическое обновление рабочих дней с учётом текущего года (используйте =ГОД(СЕГОДНЯ()) для генерации праздников).

В Power Query:

  1. Импортируйте данные с датами
  2. Добавьте пользовательский столбец с формулой = Date.From([КонечнаяДата]) - Date.From([НачальнаяДата])
  3. Преобразуйте результат в дни с помощью Duration.Days

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

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

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

⚠️ Внимание: Если после вычитания дат вы получаете дробное число (например, 35.125), это означает, что в одной из ячеек указано время. Используйте =ЦЕЛОЕ(B2-A2) для округления до дней или =ОКРУГЛВНИЗ().

Другие ошибки:

  • 🚫 #ЗНАЧ! — одна из "дат" на самом деле текст. Проверьте формат ячейки.
  • 🚫 Отрицательное число — конечная дата раньше начальной. Используйте =АБС() для модуля.
  • 🚫 Неправильный результат в РАЗНДАТ — проверьте порядок аргументов (сначала начальная дата, затем конечная).

Чтобы диагностировать проблему, используйте функцию =ТИП():

=ТИП(A2)

Если результат 2 — это текст, 1 — число (включая даты).

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

Рассмотрим реальные кейсы, где подсчёт дней критически важен:

1. Логистика: Расчёт времени доставки между городами.

=ЧИСТРАБДНИ(ДатаОтправки; ДатаПолучения; Праздники) - 2

(минус 2 дня на обработку заказа).

2. HR: Подсчёт стажа сотрудников для премий.

=РАЗНДАТ(ДатаПриёма; СЕГОДНЯ(); "y")

3. Финансы: Расчёт просрочки по платежам.

=ЕСЛИ(СЕГОДНЯ()>ДатаОплаты; СЕГОДНЯ()-ДатаОплаты; 0)

4. Производство: Контроль сроков выполнения заказов.

=ЕСЛИ(ЧИСТРАБДНИ(СЕГОДНЯ(); КрайнийСрок)<5; "Срочно!"; "В норме")

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

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

Используйте формулу =СЕГОДНЯ()-A1, где A1 — ячейка с вашей датой. Функция СЕГОДНЯ() всегда возвращает текущую дату и обновляется при пересчёте листа.

Почему Excel показывает ###### вместо даты?

Это означает, что ширина столбца недостаточна для отображения даты. Расширьте столбец или измените формат на более компактный (например, 14.03.2026 вместо 14 марта 2026 г.).

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

Используйте формулу =ЦЕЛОЕ((КонечнаяДата-НачальнаяДата)/7). Например, =ЦЕЛОЕ((ДАТА(2026;6;30)-ДАТА(2026;5;1))/7) вернёт 8 (полных недель между 1 мая и 30 июня 2026 года).

Можно ли посчитать дни с учётом только конкретных дней недели (например, только понедельники)?

Да, но потребуется массивная формула. Пример для подсчёта понедельников между двумя датами:

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

где A1 — начальная дата, B1 — конечная. Для других дней недели измените =1 на =2 (вторник) и т.д.

Как экспортировать результаты подсчёта дней в Word или PDF?

Выделите диапазон с датами и результатами, затем перейдите в Файл → Экспорт → Создать PDF/XPS. Для экспорта в Word скопируйте данные и вставьте их в документ через Специальная вставка → Текст Unicode.