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

Почему Excel ошибается в расчётах дней — и как этого избежать

Работа с датами в Microsoft Excel только кажется простой. На практике даже опытные пользователи сталкиваются с неожиданными ошибками: программа может выдать отрицательное количество дней, округлить результат до целого числа или вообще вернуть #ЧИСЛО!. Всё потому, что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), а не как текст — и это накладывает ограничения на вычисления.

К примеру, если вы просто вычтете одну дату из другой (=B2-A2), то получите разницу в днях — но только при условии, что обе ячейки отформатированы как дата, а не как текст. А вот функция РАЗНДАТ (или DATEDIF в английской версии) позволяет учитывать годы, месяцы и дни по отдельности, но её синтаксис не документирован в справке Excel. В этой статье разберём все рабочие способы — от базового вычитания до расчёта рабочих дней с учётом праздников.

Способ 1: Простое вычитание дат (базовый метод)

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

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

Например, если в ячейке A2 указана дата начала проекта (15.05.2026), а в B2 — дата окончания (20.05.2026), то формула =B2-A2 вернёт 5 (дни между датами). Но здесь есть подводные камни:

  • 📅 Формат ячеек: Если даты введены как текст (например, "15 мая"), Excel не распознает их как даты и вернёт ошибку. Проверьте формат через Главная → Формат → Формат ячеек → Дата.
  • ⚠️ Отрицательный результат: Если начальная дата позже конечной, формула вернёт отрицательное число. Используйте =АБС(B2-A2), чтобы получить модуль.
  • 🔄 Время в датах: Если в ячейках указано время (например, 15.05.2026 14:30), результат будет дробным (5,2 дня). Чтобы отбросить дробную часть, оберните формулу в =ЦЕЛОЕ(B2-A2).
⚠️ Внимание: Excel считает 1900 год високосным (хотя на самом деле он не был таковым). Это может искажать расчёты для исторических дат до 1900 года. Для точности используйте =ДАТАЗНАЧ("01.03.1900") вместо прямого ввода.
📊 Какой способ расчёта дней вы используете чаще?
Простое вычитание
Функция РАЗНДАТ
Формулы с УСЛОВИЯМИ
Другое

Способ 2: Функция РАЗНДАТ (DATEDIF) — скрытый инструмент Excel

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

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

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

ЗначениеЧто возвращаетПример
"D"Количество полных дней=РАЗНДАТ(A2;B2;"D") → 365
"M"Количество полных месяцев=РАЗНДАТ(A2;B2;"M") → 12
"Y"Количество полных лет=РАЗНДАТ(A2;B2;"Y") → 1
"YM"Месяцы без учёта лет=РАЗНДАТ(A2;B2;"YM") → 3
"MD"Дни без учёта месяцев и лет=РАЗНДАТ(A2;B2;"MD") → 15

Главное преимущество РАЗНДАТ — возможность разделить разницу на годы, месяцы и дни. Например, чтобы получить результат в формате "1 год 3 месяца 15 дней", используйте:

=РАЗНДАТ(A2;B2;"Y") & " год " & РАЗНДАТ(A2;B2;"YM") & " мес. " & РАЗНДАТ(A2;B2;"MD") & " дн."
⚠️ Внимание: В Excel для Mac 2011 и более ранних версиях функция РАЗНДАТ может отсутствовать. В этом случае используйте альтернативу: =ЦЕЛОЕ(B2-A2) для дней или комбинацию функций ГОД, МЕСЯЦ, ДЕНЬ.

Убедитесь, что даты введены как даты, а не текст|Проверьте порядок дат (начальная ≤ конечная)|Используйте "D" для точного количества дней|Для отрицательных результатов добавьте АБС-->

Способ 3: Расчёт рабочих дней (без выходных и праздников)

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

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

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

  • 📊 Без праздников: =ЧИСТРАБДНИ(A2;B2) вернёт количество рабочих дней между датами, исключая субботу и воскресенье.
  • 🎉 С праздниками: Если в диапазоне D2:D10 перечислены праздники (например, 1 января, 8 марта), используйте =ЧИСТРАБДНИ(A2;B2;D2:D10).
  • 🔄 Обратный отсчёт: Чтобы узнать дату через N рабочих дней, используйте =РАБДЕНЬ(Начальная_дата; N; [Праздники]).

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

Как указать нестандартные выходные в ЧИСТРАБДНИ.МЕЖД

В функции ЧИСТРАБДНИ.МЕЖД четвертый аргумент — это код выходных. Например:

- 1 — суббота и воскресенье (по умолчанию)

- 11 — только воскресенье

- "0000011" — пятница и суббота (строка из 7 символов, где 1 — выходной, 0 — рабочий день).

Пример: =ЧИСТРАБДНИ.МЕЖД(A2;B2;1;"0000011") посчитает дни, где выходные — пятница и суббота.

Способ 4: Учёт времени в датах (точные часы и минуты)

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

  • Часы: =(B2-A2)*24
  • ⏱️ Минуты: =(B2-A2)*24*60
  • ⏲️ Секунды: =(B2-A2)*24*60*60

Пример: если между датами прошло 2,5 дня, то формула =(B2-A2)*24 вернёт 60 часов. Чтобы отформатировать ячейку с временем корректно, выберите формат [ч]:мм:сс (через Формат ячеек → Число → Время).

Для расчёта только рабочего времени (например, с 9:00 до 18:00) используйте комбинацию функций:

=ЕСЛИ(И(B2>=A2; ЧАС(A2)>=9; ЧАС(B2)<=18); (B2-A2)*24; 0)

Способ 5: Динамический расчёт (автоматическое обновление)

Чтобы Excel автоматически пересчитывал количество дней при изменении текущей даты, используйте функцию СЕГОДНЯ (или TODAY):

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

Эта формула вернёт количество дней между сегодняшней датой и датой в ячейке A2. Например, если сегодня 20.05.2026, а в A2 указана дата 15.05.2026, результат будет 5.

Для более сложных сценариев:

  • 📅 Дни до события: =Дата_события-СЕГОДНЯ() (если результат отрицательный, событие уже прошло).
  • 🔄 Автообновление при открытии файла: Перейдите в Файл → Параметры → Формулы и включите опцию "Пересчитывать книгу при открытии".
  • Дни с учётом времени: =(СЕГОДНЯ()+СЕЙЧАС()-A2)*24 (вернёт часы с момента указанной даты).
⚠️ Внимание: Функция СЕГОДНЯлетучая (volatile), то есть пересчитывается при каждом изменении в книге. Это может замедлять работу больших файлов. Чтобы избежать лагов, используйте CTRL+; (горячие клавиши для вставки текущей даты) вместо формулы, если обновление не требуется.

Ошибки и их решения: почему Excel неправильно считает дни

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

ОшибкаПричинаРешение
#ЧИСЛО!Некорректный формат даты (текст вместо даты)Используйте =ДАТАЗНАЧ(Текстовая_дата) или измените формат ячейки
Отрицательное числоНачальная дата позже конечнойДобавьте АБС или поменяйте даты местами
#ИМЯ?Опечатка в названии функции (например, "РАЗНДАТА" вместо "РАЗНДАТ")Проверьте синтаксис (в английской версии — DATEDIF)
Неверное количество днейВремя в датах влияет на результатИспользуйте =ЦЕЛОЕ(B2-A2) для целых дней
#ЗНАЧ!Ячейка содержит ошибку или пустаПроверьте данные на корректность

Если Excel упорно не распознаёт дату, попробуйте:

  1. Выделите проблемную ячейку → Главная → Формат → Формат ячеек → Дата.
  2. Используйте функцию =ДАТАЗНАЧ("15.05.2026") для принудительного преобразования текста в дату.
  3. Проверьте региональные настройки: в некоторых версиях Excel разделителем даты служит не точка, а косая черта (15/05/2026).

FAQ: Частые вопросы о расчёте дней в Excel

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

Да, все описанные методы работают и в Google Sheets, за исключением функции РАЗНДАТ — её аналогом является =DATEDIF (с тем же синтаксисом). Также в Google Таблицах есть функция =DAYS для простого вычитания дат: =DAYS(B2; A2).

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

Используйте функцию ЧИСТРАБДНИ с третьим аргументом — диапазоном праздников. Например, если праздники перечислены в D2:D10:

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

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

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

Это означает, что в одной или обеих датах указано время. Например, 15.05.2026 14:00 — это не просто дата, а дата+время. Чтобы получить целые дни:

  • Используйте =ЦЕЛОЕ(B2-A2).
  • Или отформатируйте ячейки как дату без времени (дд.мм.гггг).
Как посчитать количество полных недель между датами?

Разделите разницу в днях на 7 и округлите в меньшую сторону:

=ЦЕЛОЕ((B2-A2)/7)

Если нужно учесть неполные недели (например, 8 дней = 1 неделя и 1 день), используйте:

=ЦЕЛОЕ((B2-A2)/7) & " нед. " & ОСТАТ((B2-A2);7) & " дн."
Можно ли автоматически подсвечивать просроченные даты?

Да, с помощью условного форматирования:

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите "Форматировать ячейки, которые содержат".
  4. Установите условие: "Значение меньше" → =СЕГОДНЯ().
  5. Задайте цвет заполнения (например, красный).

Теперь все даты раньше сегодняшней будут подсвечены.