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

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

В этой статье мы разберём 5 проверенных способов подсчёта дней между датами — от базового вычитания до сложных формул с учётом выходных и праздничных дней. Вы узнаете, как избежать типичных ошибок (например, когда Excel воспринимает даты как текст), как работать с отрицательными значениями и почему иногда результат отличается от ожидаемого на 1 день. А для тех, кто работает с большими массивами данных, мы подготовили таблицу сравнения методов и чек-лист для быстрой проверки формул.

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

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

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

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

Допустим, у вас есть две даты в ячейках A1 (нач. дата) и B1 (кон. дата). Формула будет выглядеть так:

=B1-A1

Результат — количество дней между датами, включая оба конца интервала, если нужно посчитать длительность (например, срок аренды). Если требуется исключить последний день (например, при расчёте просрочки), используйте =B1-A1-1.

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

Этот метод подходит для большинства задач, но имеет ограничения:

  • 📅 Не учитывает рабочие/выходные дни.
  • 🔄 Не работает с отрицательными значениями (если начальная дата позже конечной).
  • 📊 Не позволяет получить результат в месяцах или годах.

2. Функция ДАТАРАЗН(): универсальный инструмент

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

Синтаксис:

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

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

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

Пример: чтобы узнать, сколько полных лет и месяцев прошло с 15 марта 2020 года по сегодняшний день (в ячейке A1 текущая дата):

=ДАТАРАЗН("15.03.2020"; A1; "y") & " лет и " & ДАТАРАЗН("15.03.2020"; A1; "ym") & " месяцев"

⚠️ Внимание: Функция ДАТАРАЗН() округляет результаты вниз. Например, если разница между датами 366 дней, ДАТАРАЗН(..., "y") вернёт 1 год, даже если фактически прошёл 1 год и 1 день. Для точного расчёта комбинируйте единицы измерения.

Единица измерения Пример формулы Результат для интервала
01.01.2023 — 15.03.2026
"d" =ДАТАРАЗН("01.01.2023"; "15.03.2026"; "d") 439 дней
"m" =ДАТАРАЗН("01.01.2023"; "15.03.2026"; "m") 14 месяцев
"y" =ДАТАРАЗН("01.01.2023"; "15.03.2026"; "y") 1 год
"ym" =ДАТАРАЗН("01.01.2023"; "15.03.2026"; "ym") 2 месяца

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

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

=РАЗНДАТ(нач_дата; кон_дата)

Пример: если в ячейке A2 дата начала проекта (10.05.2026), а в B2 — дедлайн (20.06.2026), формула вернёт 41 день:

=РАЗНДАТ(A2; B2)

Плюсы:

  • 🔍 Проще в использовании — не нужно запоминать коды единиц измерения.
  • 📈 Работает быстрее на больших массивах данных.

Минусы:

  • 🚫 Не поддерживает месяцы и годы — только дни.
  • 🔄 Не работает в Excel 2010 и старше.

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

Если вам нужно посчитать только рабочие дни (исключая субботу, воскресенье и праздники), используйте:

  • ЧИСТРАБДНИ() (англ. NETWORKDAYS) — возвращает количество рабочих дней между датами.
  • РАБДЕНЬ() (англ. WORKDAY) — добавляет рабочие дни к дате (полезно для расчёта дедлайнов).

Синтаксис ЧИСТРАБДНИ():

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

Аргумент [праздники] — необязательный диапазон ячеек с датами праздников. Например, если в ячейках D1:D5 перечислены праздники (01.01.2026, 07.01.2026 и т.д.), формула будет:

=ЧИСТРАБДНИ(A1; B1; D1:D5)

💡 Пример из практики: Допустим, вы отправляете заказ 10 мая 2026 года, а срок доставки — 14 рабочих дней. Чтобы узнать дату получения с учётом выходных:

=РАБДЕНЬ("10.05.2026"; 14)

Результат: 31 мая 2026 года (если не учитывать праздники).

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

Ячейки с датами отформатированы как даты|Праздники указаны в отдельном диапазоне|Учтён региональный календарь выходных|Проверен результат на отрицательные значения-->

5. Расчёт дней с учётом времени (даты + время)

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

  • 🕒 24 — для часов;
  • 🕒 24*60 = 1440 — для минут;
  • 🕒 24*60*60 = 86400 — для секунд.

Пример: в ячейке A1 — 15.05.2026 09:00, в B1 — 16.05.2026 17:30. Формула для расчёта часов:

=(B1-A1)*24

Результат: 32,5 часа.

Для округления до целых часов используйте ОКРУГЛ():

=ОКРУГЛ((B1-A1)*24; 0)

🔹 Нюанс: Если вам нужно посчитать только полные дни (игнорируя время), используйте ЦЕЛОЕ():

=ЦЕЛОЕ(B1-A1)

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

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

🔴 Ошибка #ЗНАЧ!:

  • 📌 Причина: Одна из ячеек содержит текст вместо даты.
  • 🔧 Решение: Проверьте формат ячеек (Ctrl+1) или используйте ДАТАЗНАЧ() для преобразования текста в дату:
    =ДАТАЗНАЧ("01.01.2026")

🔴 Некорректный результат (на 1 день больше/меньше):

  • 📌 Причина: Excel учитывает или не учитывает последний день интервала.
  • 🔧 Решение: Явно укажите, включать ли конец интервала:
    =B1-A1  // включает оба дня
    

    =B1-A1-1 // исключает последний день

🔴 Отрицательное значение:

  • 📌 Причина: Начальная дата позже конечной.
  • 🔧 Решение: Используйте АБС() для модуля или поменяйте даты местами:
    =АБС(B1-A1)

Критическая ошибка: если вы работаете с датами до 1900 года (например, исторические данные), Excel их не распознаёт. В этом случае используйте текстовый формат или специализированные надстройки.

Почему Excel считает 1900 год високосным (ошибка в 1 день)?

Excel наследует ошибку из Lotus 1-2-3, где 1900 год ошибочно считался високосным. Это приводит к смещению на 1 день при расчётах с датами до 1 марта 1900 года. Чтобы избежать проблемы, используйте даты начиная с 1900 года или корректируйте результат вручную.

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

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

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

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

Используйте комбинацию функций:

=ДАТАРАЗН(A1; B1; "y")*12 + ДАТАРАЗН(A1; B1; "ym")

Для точного результата с учётом дней добавьте:

=ДАТАРАЗН(A1; B1; "y")*12 + ДАТАРАЗН(A1; B1; "ym") & " мес. и " & ДАТАРАЗН(A1; B1; "md") & " дн."

Почему моя формула возвращает ###### вместо результата?

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

Как автоматически обновлять текущую дату в формулах?

Используйте функцию =СЕГОДНЯ() (англ. TODAY()). Она возвращает текущую дату и обновляется при каждом открытии файла. Пример:

=РАЗНДАТ(A1; СЕГОДНЯ())

⚠️ Внимание: Эта функция не обновляется в реальном времени — только при пересчёте листа (F9) или открытии файла.

Можно ли посчитать дни между датами в Power Query?

Да, в Power Query (вкладка Данные → Получение данных) можно создать пользовательский столбец с формулой на языке M:

= Duration.Days([EndDate] - [StartDate])

Это полезно для обработки больших наборов данных без использования формул в ячейках.