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

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

В этой статье мы разберем 5 проверенных способов расчета интервалов между датами — от простейших формул до продвинутых техник с учетом рабочих дней и праздников. Вы узнаете, как избежать типичных ошибок (например, с отрицательными результатами), как учитывать високосные годы и почему функция РАЗНДАТ иногда ведет себя непредсказуемо. А для тех, кто работает с большими массивами данных, мы подготовили бонусный раздел с автоматизацией через Power Query.

Прежде чем погружаться в формулы, запомните ключевое правило: в Excel даты хранятся как числа, где 1 января 1900 года = 1, а каждое последующее число соответствует следующему дню. Это означает, что вычитая одну дату из другой, вы фактически получаете разницу в днях. Но что делать, если нужны месяцы или годы? Здесь на помощь приходят специализированные функции.

═══

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

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

Формула выглядит так:

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

Например, если в ячейке A2 указана дата начала проекта 15.05.2026, а в B2 — дата окончания 30.06.2026, формула =B2-A2 вернет 46 дней. Результат будет в числовом формате — чтобы отобразить его как дни, выберите формат ячейки Общий или Числовой.

Этот метод подходит для:

  • 📅 Расчета сроков выполнения задач
  • ⏳ Определения возраста в днях (например, для инвентаризации)
  • 📊 Анализа временных интервалов в отчетах
⚠️ Внимание: Если начальная дата позже конечной, формула вернет отрицательное значение. Чтобы избежать этого, используйте функцию =АБС(B2-A2) — она преобразует результат в абсолютное число.

═══

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

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

Синтаксис функции:

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

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

  • "D" — разница в днях
  • "M" — разница в полных месяцах
  • "Y" — разница в полных годах
  • "YM" — разница в месяцах без учета лет
  • "MD" — разница в днях без учета месяцев и лет
  • "YD" — разница в днях без учета лет

Примеры использования:

Формула Начальная дата Конечная дата Результат Пояснение
=РАЗНДАТ(A2;B2;"D") 01.01.2023 15.03.2023 73 73 дня между датами
=РАЗНДАТ(A2;B2;"M") 10.05.2022 20.08.2023 15 15 полных месяцев
=РАЗНДАТ(A2;B2;"Y") 15.12.2020 10.01.2026 3 3 полных года
=РАЗНДАТ(A2;B2;"YM") 05.06.2023 20.10.2023 4 4 месяца сверх полных лет

Важно: Функция РАЗНДАТ учитывает високосные годы при расчете дней, но может давать неожиданные результаты, если начальная дата позже конечной. В этом случае она вернет ошибку #ЧИСЛО!.

📊 Какой формат результата вам нужнее всего?
Дни
Месяцы
Годы
Дни без учета лет

═══

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

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

Синтаксис:

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

Пример:

  • В ячейке A201.06.2026 (начало проекта)
  • В ячейке B230.06.2026 (дедлайн)
  • В диапазоне D2:D5 — праздники: 12.06.2026 (День России) и 24.06.2026 (местный праздник)

Формула будет такой:

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

Результат: 19 рабочих дней (в июне 2026 года 21 рабочий день минус 2 праздничных).

Указать начальную и конечную даты|Проверить формат ячеек (должен быть "Дата")|Создать список праздников в отдельном диапазоне|Использовать абсолютные ссылки для диапазона праздников (например, $D$2:$D$5)

-->

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

═══

4. Продвинутые техники: комбинация функций

Иногда стандартных функций недостаточно. Рассмотрим несколько сценариев, где требуется комбинация формул:

Сценарий 1: Расчет возраста в "годах и месяцах"

Чтобы получить результат в формате "X лет Y месяцев", используйте вложенные функции:

=РАЗНДАТ(A2;B2;"Y") & " лет " & РАЗНДАТ(A2;B2;"YM") & " месяцев"

Сценарий 2: Учет неполных месяцев

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

=ЕСЛИ(РАЗНДАТ(A2;B2;"MD")>15; РАЗНДАТ(A2;B2;"YM")+1; РАЗНДАТ(A2;B2;"YM"))

Эта формула добавляет +1 месяц, если разница в днях превышает 15.

Сценарий 3: Расчет кварталов

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

=ЦЕЛОЕ(РАЗНДАТ(A2;B2;"M")/3)
Как работает округление в сценарии 2?

Формула проверяет остаток дней после вычитания полных месяцев ("MD"). Если остаток >15 дней, она округляет месяцы в большую сторону. Например, интервал с 15.01.2026 по 16.02.2026 будет считаться как 2 месяца (хотя фактически прошел 1 месяц и 1 день).

═══

5. Автоматизация через Power Query

Если вам нужно рассчитать интервалы для тысяч строк (например, в отчетах по срокам доставки или времени реакции службы поддержки), ручной ввод формул станет кошмаром. Здесь поможет Power Query — инструмент для преобразования данных, встроенный в Excel 2016+.

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

  1. Выделите таблицу с датами и перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
  2. В открывшемся редакторе Power Query добавьте столбец с формулой:
    = Date.From([Конечная_дата]) - Date.From([Начальная_дата])

    Это вычислит разницу в днях.

  3. Чтобы получить годы или месяцы, используйте функции Date.Year() и Date.Month() с дополнительной логикой.
  4. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Преимущества Power Query:

  • 🔄 Автоматическое обновление при изменении исходных данных
  • ⚡ Обработка миллионов строк без тормозов
  • 📊 Возможность добавлять дополнительные вычисления (например, категоризацию по срокам)

═══

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

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

Ошибка 1: Текст вместо даты

Если дата введена как текст (например, "01.01.2026" вместо формата даты), Excel не сможет ее распознать. Чтобы исправить:

  • Выделите ячейку → правый клик → Формат ячеек → Дата.
  • Используйте функцию =ДАТАЗНАЧ(A1), чтобы преобразовать текст в дату.

Ошибка 2: Отрицательные результаты

Если конечная дата раньше начальной, функции вроде РАЗНДАТ вернут ошибку. Решения:

  • Используйте =АБС(РАЗНДАТ(A2;B2;"D")).
  • Поменяйте местами ячейки: =РАЗНДАТ(MIN(A2;B2); MAX(A2;B2); "D").

Ошибка 3: Неучтенные високосные годы

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

⚠️ Внимание: В Excel 1900 год ошибочно считается високосным (хотя на самом деле он не високосный). Это может искажать расчеты для исторических дат. Для точности используйте функцию =ДАТА() вместо ручного ввода.

═══

FAQ: Частые вопросы о расчете сроков в Excel

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

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

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

вернет количество дней между сегодняшним днем и датой в ячейке A2. Для автоматического обновления нажмите F9.

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

Разделите разницу в днях на 7:

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

Для точного результата с десятичными (например, 3.5 недели) уберите функцию ЦЕЛОЕ.

Почему РАЗНДАТ возвращает #ЧИСЛО!?

Ошибка #ЧИСЛО! возникает в трех случаях:

  1. Начальная дата позже конечной.
  2. Одна из ячеек содержит текст или ошибку.
  3. Неверный формат третьего аргумента (например, опечатка в "YM").

Проверьте формат ячеек и правильность ввода.

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

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

=РАЗНДАТ(A2;B2;"Y") + ЕСЛИ(ИЛИ(МЕСЯЦ(B2)>МЕСЯЦ(A2); И(МЕСЯЦ(B2)=МЕСЯЦ(A2); ДЕНЬ(B2)>=ДЕНЬ(A2))); 0; -1)

Эта формула корректно учитывает, прошел ли день рождения в текущем году.

Можно ли посчитать рабочие часы между датами?

Да, но потребуется комбинация функций. Пример для 8-часового рабочего дня:

=ЧИСТРАБДНИ(A2;B2)*8 - (ЕСЛИ(ДЕНЬНЕД(A2;2)>5; 8; 0)) + (ЕСЛИ(ДЕНЬНЕД(B2;2)>5; 0; 8))

Здесь ДЕНЬНЕД(...,2) возвращает номер дня недели (1=понедельник, 7=воскресенье).