Как вычесть даты в Excel: формулы для расчета разницы в днях, месяцах и годах

Введение: зачем вычитать даты в Excel?

Разница между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. От расчета срока выполнения проекта до определения стажа работы или времени доставки заказа — умение правильно вычитать даты экономит часы ручной работы. Но что если нужно учесть только рабочие дни? Или получить результат не в днях, а в месяцах? А что делать, если Excel вдруг показывает вместо числа странный код ######?

В этой статье вы найдете 5 проверенных способов вычитания дат — от базовых формул до продвинутых функций с учетом праздников и выходных. Мы разберем типичные ошибки (например, почему =ДАТАЗНАЧ("31.01.2026")-ДАТАЗНАЧ("01.01.2026") дает 30, а не 31 день), покажем, как преобразовать результат в годы или часы, и дадим готовые шаблоны для копирования. Особое внимание уделим функции РАЗНДАТ — она скрыта в Excel, но решает 80% задач по работе с датами.

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

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

=B2-A2

Где A2 — ячейка с более ранней датой, а B2 — с более поздней. Результат будет в днях. Например:

  • 📅 =ДАТАЗНАЧ("15.05.2026")-ДАТАЗНАЧ("10.05.2026") → вернет 5 (дней)
  • 📅 =ДАТАЗНАЧ("01.03.2026")-ДАТАЗНАЧ("01.02.2026") → вернет 28 (в 2026 году февраль невисокосный)

Важно: если ячейки отформатированы как текст (например, после импорта из CSV), Excel может не распознать их как даты. Чтобы исправить это, используйте функцию ДАТАЗНАЧ или преобразуйте формат ячейки в Дата через меню Главная → Формат → Формат ячеек.

Формула Пример Результат Пояснение
=B1-A1 10.06.2026 - 05.06.2026 5 Разница в днях между двумя датами
=ДАТАЗНАЧ("31.12.2026")-СЕГОДНЯ() 31.12.2026 - 15.07.2026 534 (на 15.07.2026) Дней до Нового 2026 года (динамический расчет)
=A1-TEXT(B1,"dd.mm.yyyy") 15.07.2026 - "10.07.2026" #ЗНАЧ! Ошибка: текст не преобразован в дату
⚠️ Внимание: Если вы вычитаете текущую дату (функция СЕГОДНЯ()) из будущей, результат будет меняться каждый день при пересчете таблицы. Чтобы зафиксировать значение, скопируйте ячейку и вставьте как Значения (Ctrl+Shift+V).

Способ 2: Функция РАЗНДАТ — скрытый инструмент для гибких расчетов

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

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

Где единица — это код возвращаемого значения:

  • 📅 "d" — разница в днях
  • 📆 "m" — разница в полных месяцах
  • 🎂 "y" — разница в полных годах
  • 📅📆 "yd" — дни без учета годов (например, разница между 15.05.2026 и 10.06.2026 вернет 26 дней)
  • 📆🎂 "ym" — месяцы без учета годов
  • 🎂📅 "md" — дни без учета месяцев и годов

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

=РАЗНДАТ("01.01.2000"; "01.01.2026"; "y")  → 25 (полных лет)

=РАЗНДАТ(A2; B2; "m") → 18 (полных месяцев между датами)

=РАЗНДАТ("15.05.2026"; СЕГОДНЯ(); "d") → 61 (дней с 15 мая, если сегодня 15.07.2026)

Почему РАЗНДАТ не видна в списке функций?

Функция РАЗНДАТ была добавлена в Excel для совместимости с Lotus 1-2-3 и никогда не документировалась официально. Несмотря на это, она работает во всех версиях, включая Excel 365 и Excel Online.

⚠️ Внимание: Функция РАЗНДАТ округляет результаты вниз. Например, разница между 31.12.2026 и 01.01.2026 в годах ("y") будет 0, хотя прошел 1 день. Для точных расчетов комбинируйте несколько единиц, например: =РАЗНДАТ(A2;B2;"y") & " лет, " & РАЗНДАТ(A2;B2;"ym") & " мес.".

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

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

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

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

  • 🏢 =ЧИСТРАБДНИ("01.06.2026"; "10.06.2026") → вернет 8 (без выходных)
  • 🎉 =ЧИСТРАБДНИ(A2; B2; D2:D5) → учитывает праздники из ячеек D2:D5

Для России в 2026 году праздничными днями будут (можно скопировать в Excel):

01.01.2026; 02.01.2026; 07.01.2026; 23.02.2026; 08.03.2026; 01.05.2026; 09.05.2026; 12.06.2026; 04.11.2026

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

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

=ЧИСТРАБДНИ.МЕЖД(A2; B2; 1; D2:D5)

Где 1 — код выходных (1 = суббота-воскресенье, 2 = воскресенье-понедельник, 11 = пятница-суббота и т.д.).

Способ 4: Разница в месяцах и годах с учетом неполных периодов

Часто требуется посчитать не только полные месяцы/годы, но и остаток. Например, стаж работы "2 года 3 месяца 15 дней". Для этого комбинируем несколько функций:

=РАЗНДАЧ(A2;B2;"y") & " лет, " & РАЗНДАТ(A2;B2;"ym") & " мес., " & РАЗНДАТ(A2;B2;"md") & " дн."

Но этот метод имеет ограничение: он не учитывает, что месяцы могут иметь разное количество дней. Для точного расчета используйте формулу:

=ЦЕЛОЕ((ГОД(B2)-ГОД(A2))*12+МЕСЯЦ(B2)-МЕСЯЦ(A2)) & " мес. " & B2-ДАТА(ГОД(B2);МЕСЯЦ(B2)-ЦЕЛОЕ((ГОД(B2)-ГОД(A2))*12+МЕСЯЦ(B2)-МЕСЯЦ(A2));ДЕНЬ(A2)) & " дн."

Пример результата для дат 15.02.2023 и 10.07.2026:

  • 📅 2 г. 4 мес. 25 дн. (точный расчет)
  • 📅 28 мес. 25 дн. (альтернативный формат)

Полные годы/месяца/дни (например, 2 г. 3 м. 5 дн.)|Только рабочие дни|Разница в часах или минутах|Дробные значения (например, 1.5 года)|Другой вариант-->

⚠️ Внимание: При расчете разницы в месяцах между 31.01.2026 и 28.02.2026 Excel может вернуть некорректный результат из-за разного количества дней в месяцах. Чтобы избежать ошибки, используйте функцию ДАТАМЕС для приведения дат к одинаковому дню месяца:
=ДАТАМЕС(A2; РАЗНДАТ(A2;B2;"m"))

Способ 5: Разница в часах, минутах и секундах

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

  1. Убедитесь, что ячейки имеют формат Дата и время (в меню Формат ячеек).
  2. Вычтите одну дату из другой: =B2-A2.
  3. Умножьте результат на нужный коэффициент:
    • *24 — для часов
    • ⏱️ *24*60 — для минут
    • ⏲️ *24*60*60 — для секунд

Примеры:

= (B2-A2)*24          → разница в часах

= ЦЕЛОЕ((B2-A2)*24) → полные часы (без дробной части)

= ТЕКСТ((B2-A2)*24; "0.00") & " ч." → форматированный вывод

Формула Пример данных Результат
= (B1-A1)*24 15.07.2026 18:00 - 15.07.2026 09:30 8.5 (часов)
= ТЕКСТ((B1-A1)*1440; "0") & " мин." 15.07.2026 10:15 - 15.07.2026 10:00 15 мин.
= ОТБР((B1-A1)*86400) 15.07.2026 10:00:30 - 15.07.2026 10:00:00 30 (секунд)

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

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

  1. Текст вместо даты: Если дата импортирована как текст (например, из CSV), Excel не сможет ее распознать. Исправляйте функцией ДАТАЗНАЧ или инструментом "Текст по столбцам" (Данные → Текст по столбцам).
  2. Неправильный порядок дат: Вычитание более поздней даты из ранней даст отрицательное число. Используйте =АБС(B2-A2), чтобы всегда получать положительный результат.
  3. Округление в РАЗНДАТ: Функция всегда округляет вниз. Для точных расчетов комбинируйте несколько единиц (например, "y" + "ym").
  4. Праздники в ЧИСТРАБДНИ: Если забыть указать праздничные дни, они будут посчитаны как рабочие. Всегда проверяйте актуальность списка праздников.
  5. Формат ячейки: Результат вычитания дат может отображаться как дата (например, 05.01.1900), если ячейка имеет формат "Дата". Измените формат на "Общий" или "Числовой".
  6. Скрытая ловушка: Функция СЕГОДНЯ() обновляется при каждом пересчете таблицы. Если вам нужно зафиксировать текущую дату (например, для отчета), используйте сочетание клавиш Ctrl+; (вставляет статическую дату) или скопируйте значение СЕГОДНЯ() как "Значения".

    Продвинутые приемы: динамические даты и условные расчеты

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

    • 📊 Расчет срока выполнения с учетом дедлайна:
      =ЕСЛИ(ЧИСТРАБДНИ(СЕГОДНЯ(); B2)<=5; "Срочно!"; "В срок")

      Проверяет, осталось ли до дедлайна (B2) меньше 5 рабочих дней.

    • 📅 Автоматическое обновление статуса:
      =ЕСЛИ(B2<СЕГОДНЯ(); "Просрочено"; ЕСЛИ(B2=СЕГОДНЯ(); "Сегодня"; "В процессе"))
    • Прогноз даты завершения:
      =РАБДЕНЬ(СЕГОДНЯ(); A2; D2:D5)

      где A2 — количество рабочих дней, а D2:D5 — праздники.

Для визуализации разницы дат используйте условное форматирование:

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

Это полезно для планирования спринтов в Agile или еженедельных отчетов.-->

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

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

Это означает, что вы вычитаете более позднюю дату из более ранней (например, 01.01.2026 - 10.01.2026). Чтобы всегда получать положительный результат, используйте функцию АБС:

=АБС(B2-A2)

Или поменяйте местами ячейки: =A2-B2.

🔹 Как посчитать возраст человека по дате рождения?

Используйте функцию РАЗНДАТ с единицей "y" для полных лет:

=РАЗНДАТ(датарождения; СЕГОДНЯ(); "y")

Для точного возраста (с месяцами и днями):

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
Важно: если дата рождения сегодня, Excel может показать 0 лет. Чтобы исправить это, добавьте проверку:
=ЕСЛИ(A2=СЕГОДНЯ(); "Сегодня день рождения!"; РАЗНДАТ(A2;СЕГОДНЯ();"y"))

🔹 Можно ли вычесть время без даты?

Да, если ячейки имеют формат "Время" (например, 14:30). Формула:

= (B1-A1)*24

вернет разницу в часах. Для минут умножьте на 1440 (24*60), для секунд — на 86400 (24*60*60).

Пример: если A1=09:00, а B1=17:30, то =ТЕКСТ((B1-A1)*24; "0.00") вернет 8.50 (часов).

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

Excel не поддерживает временные зоны напрямую. Решения:

  1. Приведите обе даты к одной временной зоне вручную (например, добавьте/вычтите часы).
  2. Используйте надстройки (например, Kutools for Excel), которые поддерживают работу с UTC.
  3. Для Google Таблиц используйте функцию =НАЧПОЛНЕД(дата; смещение; выходной) с учетом смещения.
Формула для корректировки времени:
=B2-A2+ВРЕМЯ(3;0;0)

где ВРЕМЯ(3;0;0) — корректировка на 3 часа (например, для перевода из MSK в UTC+0).

🔹 Почему функция ЧИСТРАБДНИ не учитывает перенос выходных?

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

=ЧИСТРАБДНИ("01.05.2026"; "10.05.2026"; {"04.05.2026";"05.05.2026";"06.05.2026"})

Альтернатива: создайте отдельный список всех нерабочих дней (включая перенесенные выходные) и ссылайтесь на него в формуле.