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

Почему Excel считает даты не так, как вы ожидаете?

Вы когда-нибудь пытались вычесть одну дату из другой в Excel, а вместо ожидаемого количества дней получали странное пятизначное число? Это не ошибка программы — так работает внутренняя логика Microsoft Excel. Дело в том, что программа хранит даты не как текст, а как последовательные числа, где 1 января 1900 года равно единице. Каждый новый день увеличивает это число на единицу. Например, 2 января 1900 года — это 2, а сегодняшняя дата — это число порядка 45000+.

Когда вы вводите в ячейку 15.05.2026, Excel воспринимает это не как текст, а как число 45415 (если система использует формат дат с 1900 года). Именно поэтому простая разность =B2-A2 даёт не дни, а разницу между этими внутренними числами. Но не волнуйтесь: мы научим вас превращать эти числа в удобные для восприятия дни, месяцы и даже годы — с учётом високосных лет и разных форматов дат.

В этой статье вы найдёте:

  • 🔹 5 рабочих способов посчитать разницу между датами (от простого к сложному)
  • 🔹 Как учитывать только рабочие дни (исключая выходные и праздники)
  • 🔹 Формулы для расчёта полных лет, месяцев и дней по отдельности
  • 🔹 Типичные ошибки и как их избежать (включая проблему с 1900 годом)

Способ 1: Простое вычитание для расчёта дней

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

=КОНДАТА - НАЧДАТА

Где:

  • 📅 КОНДАТА — ячейка с конечной датой (например, B2)
  • 📅 НАЧДАТА — ячейка с начальной датой (например, A2)

Пример: если в A2 у вас 01.01.2026, а в B215.01.2026, формула вернёт 14. Но здесь есть нюанс: Excel по умолчанию отображает результат как дату (например, 14.01.1900). Чтобы увидеть именно дни, измените формат ячейки с результатом на "Общий" или "Числовой".

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

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

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

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

Где единица — это код, определяющий, что именно считать:

Код Что считает Пример результата
"D" Количество дней 365 (дней между 01.01.2023 и 01.01.2026)
"M" Количество полных месяцев 11 (между 15.01.2023 и 10.12.2023)
"Y" Количество полных лет 2 (между 01.01.2020 и 31.12.2022)
"YM" Месяцы без учёта лет 3 (между 15.01.2023 и 15.04.2023)
"MD" Дни без учёта месяцев и лет 5 (между 25.01.2023 и 30.01.2023)

Пример использования: чтобы узнать, сколько полных лет прошло с 10.05.1990 до 10.05.2026, используйте:

=РАЗНДАТ("10.05.1990"; "10.05.2026"; "Y")

Убедитесь, что даты введены как даты, а не как текст|Проверьте регистр букв в коде единицы (например, "D", а не "д")|Используйте точку с запятой (;) как разделитель в русскоязычной версии Excel|Для английской версии замените точку с запятой на запятую

-->

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

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

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

Базовый синтаксис:

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

Пример: чтобы узнать количество рабочих дней между 01.01.2026 и 31.01.2026, используйте:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026")

Если в январе были праздники (например, 1-8 января), укажите их как диапазон ячеек или массив:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; {"01.01.2026";"02.01.2026";"07.01.2026"})

Ежедневно|Несколько раз в неделю|Редко, по необходимости|Никогда не пользовался этой функцией-->

Для расчёта рабочих дней между сегодняшней датой и будущей используйте функцию СЕГОДНЯ:

=ЧИСТРАБДНИ(СЕГОДНЯ(); "31.12.2026")
⚠️ Внимание: Функция ЧИСТРАБДНИ считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, выходной — пятница), используйте функцию ЧИСТРАБДНИ.МЕЖД (доступна с Excel 2010), где можно указать свои выходные дни.

Способ 4: Разделение разницы на годы, месяцы и дни

Часто требуется вывести разницу между датами в формате "X лет, Y месяцев, Z дней". Для этого придётся комбинировать несколько функций. Вот универсальная формула:

=РАЗНДАТ(A2;B2;"Y") & " лет, " & РАЗНДАТ(A2;B2;"YM") & " мес., " & РАЗНДАТ(A2;B2;"MD") & " дн."

Где:

  • 📌 A2 — начальная дата
  • 📌 B2 — конечная дата
  • 📌 & — оператор сцепления текста

Пример результата: "2 лет, 5 мес., 15 дн.". Если нужно убрать нулевые значения (например, чтобы не выводить "0 мес."), используйте функцию ЕСЛИ:

=РАЗНДАТ(A2;B2;"Y") & " лет" & ЕСЛИ(РАЗНДАТ(A2;B2;"YM")>0; ", " & РАЗНДАТ(A2;B2;"YM") & " мес."; "") & ЕСЛИ(РАЗНДАТ(A2;B2;"MD")>0; ", " & РАЗНДАТ(A2;B2;"MD") & " дн."; "")
Почему формула может показывать неточные месяцы?

Функция РАЗНДАТ считает полные месяцы исходя из календарных дат, а не из количества дней. Например, разница между 31.01.2026 и 28.02.2026 по коду "M" будет 0 месяцев, потому что 28.02 — это не полный месяц после 31.01. Чтобы избежать этого, используйте комбинацию "Y", "YM" и "MD".

Способ 5: Расчёт разницы с учётом времени (дни + часы)

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

  • 🕒 Часы: = (КОНДАТА - НАЧДАТА) * 24
  • 🕒 Минуты: = (КОНДАТА - НАЧДАТА) 24 60
  • 🕒 Секунды: = (КОНДАТА - НАЧДАТА) 24 60 * 60

Пример: если в A2 у вас 15.05.2026 09:00, а в B216.05.2026 17:30, формула для часов вернёт 32.5 (1 сутки и 8.5 часов = 32.5 часа).

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

=ЦЕЛОЕ(B2-A2) & " дн., " & ОСТАТ(B2-A2;1)*24 & " ч."
⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат "Дата" или "Дата и время". Если Excel воспринимает ваши данные как текст, формулы не будут работать. Проверьте формат через Главная → Формат → Формат ячеек.

Типичные ошибки и как их исправить

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

  1. Ошибка #ЗНАЧ! при вычитании дат

    Причина: одна или обе даты введены как текст, а не как дата.

    Решение: Преобразуйте текст в дату с помощью функции =ДАТАЗНАЧ(A2) или измените формат ячейки на "Дата".

  2. Неправильный результат в функции РАЗНДАТ

    Причина: использован неверный код единицы (например, "d" вместо "D").

    Решение: Проверьте регистр букв — коды чувствительны к регистру!

  3. Отрицательное количество дней

    Причина: конечная дата раньше начальной.

    Решение: Поменяйте даты местами или используйте функцию =АБС(КОНДАТА - НАЧДАТА), чтобы получить абсолютное значение.

Важно: Excel для Windows и Excel для Mac используют разные стартовые даты: 1900 год и 1904 год соответственно. Если вы переносите файл между платформами, разница в датах может сбиться на 4 года! Чтобы проверить систему дат в вашем Excel, введите в ячейку =ДАТА(1900;1;1) — если результат 1, у вас система 1900 года; если 0, то 1904 года.

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

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

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

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

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

=ЦЕЛОЕ((КОНДАТА - НАЧДАТА)/7)

Для неполных недель используйте:

= (КОНДАТА - НАЧДАТА)/7
Почему функция РАЗНДАТ не работает в моём Excel?

Причины могут быть следующие:

  • Вы используете английскую версию Excel — замените РАЗНДАТ на DATEDIF.
  • Ошибка в синтаксисе: проверьте разделители (точка с запятой для русского Excel, запятая для английского).
  • Даты введены как текст — преобразуйте их в даты с помощью ДАТАЗНАЧ.
Как посчитать возраст человека по дате рождения?

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

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

Для вывода в формате "X лет, Y месяцев":

=РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " мес."
Можно ли автоматически обновлять разницу при изменении дат?

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

  1. Перейдите в Формулы → Параметры вычислений.
  2. Выберите "Автоматически" (если стоит "Вручную", формулы не будут обновляться).