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

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

Многие ошибочно пытаются использовать простую формулу =ГОД(Б2)-ГОД(Б1), но она дает неточный результат, если даты приходятся на разные месяцы. Например, разница между 1 января 2020 и 31 декабря 2019 по этой формуле составит 1 год, хотя фактически прошел всего 1 день. В этой статье мы разберем 5 проверенных способов получить корректную разницу в годах — от скрытой функции DATEDIF до универсальной YEARFRAC, а также покажем, как обойтись без формул с помощью условного форматирования.

1. Почему простая разница дат в Excel не работает

Excel хранит даты в виде последовательных чисел, где 1 января 1900 года соответствует числу 1, а каждая последующая дата увеличивает это значение на единицу. Когда вы вычитаете одну дату из другой (=Б2-Б1), программа возвращает разницу в днях. Например:

  • 📅 =ДАТА(2023;12;31)-ДАТА(2020;1;1) → вернет 1459 (дней между датами)
  • 📅 =ДАТА(2023;6;15)-ДАТА(2022;6;10) → вернет 370 (год + 5 дней)

Если разделить этот результат на 365, получим приблизительную разницу в годах, но этот метод дает погрешность из-за високосных лет. Например, разница между 29 февраля 2020 и 1 марта 2026 составит ровно 4 года, но деление на 365 покажет 4.0027 года — ошибка в 1 день!

⚠️ Внимание: Формула =ГОД(Б2)-ГОД(Б1) игнорирует месяцы и дни. Она подходит только для дат с одинаковым днем и месяцем (например, разница между 15.05.2020 и 15.05.2023).

Чтобы избежать ошибок, используйте специализированные функции, о которых пойдет речь далее.

2. Функция DATEDIF: скрытый инструмент для точного расчета

Функция DATEDIF (от англ. Date Difference) — это "секретное оружие" Excel, которое не отображается в списке мастер-функций, но работает во всех версиях программы, начиная с Excel 2007. Она позволяет вычислить разницу между датами в годах, месяцах или днях с учетом календарных особенностей.

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

=DATEDIF(дата_начала; дата_конца; "единица_измерения")

Для расчета разницы в полных годах используйте параметр "Y":

=DATEDIF(B1; B2; "Y")

Примеры работы:

Дата начала (B1)Дата конца (B2)ФормулаРезультат
01.01.202031.12.2022=DATEDIF(B1;B2;"Y")2
15.06.201814.06.2023=DATEDIF(B1;B2;"Y")4
29.02.202001.03.2026=DATEDIF(B1;B2;"Y")4

DATEDIF учитывает високосные годы и возвращает только целое число полных лет. Если вам нужна разница с дробной частью (например, 2.5 года), используйте комбинацию параметров "Y" и "YM":

=DATEDIF(B1; B2; "Y") & " лет, " & DATEDIF(B1; B2; "YM") & " месяцев"
📊 Какой способ расчета разницы в годах вы используете чаще?
Формула DATEDIF
Ручной расчет (вычитание годов)
Функция YEARFRAC
Условное форматирование
Другой

3. YEARFRAC: универсальная функция для дробных лет

Если вам нужна точная разница в годах с учетом доли (например, 3.75 года вместо 3), используйте функцию YEARFRAC (от англ. Year Fraction). Она возвращает разницу между двумя датами в виде десятичной дроби, где целая часть — это полные годы, а дробная — часть года.

Синтаксис:

=YEARFRAC(дата_начала; дата_конца; [базис])

Параметр [базис] определяет метод расчета (по умолчанию = 0):

  • 📊 0 или опущен — американский метод (NASD), 30/360
  • 📊 1 — фактический/фактический (точный расчет)
  • 📊 2 — фактический/360
  • 📊 3 — фактический/365
  • 📊 4 — европейский метод, 30/360

Примеры:

=YEARFRAC(ДАТА(2020;1;1); ДАТА(2023;6;15); 1)  → 3.49 (точный расчет)

=YEARFRAC(ДАТА(2020;1;1); ДАТА(2023;6;15); 3) → 3.47 (365 дней в году)

⚠️ Внимание: Функция YEARFRAC может давать незначительные расхождения (до 0.03 года) в зависимости от выбранного базиса. Для финансовых расчетов используйте базис 1 (фактический/фактический).

Чтобы получить только целую часть (полные годы), оберните результат в функцию ЦЕЛОЕ:

=ЦЕЛОЕ(YEARFRAC(B1; B2; 1))

Убедитесь, что даты введены как даты (не текст)

Используйте базис 1 для точного расчета

Для финансовых документов сверьте результат с календарем

Округлите результат до 2 знаков после запятой (если нужно)

-->

4. Альтернативные методы: без специализированных функций

Если по какой-то причине DATEDIF или YEARFRAC недоступны (например, в некоторых локализованных версиях Excel), можно использовать комбинацию стандартных функций:

Способ 1: Формула с ЕСЛИ и ДАТА

Эта формула проверяет, прошел ли день рождения (или другая годовщина) в текущем году:

=ЕСЛИ(ИЛИ(МЕСЯЦ(B2)>МЕСЯЦ(B1); И(МЕСЯЦ(B2)=МЕСЯЦ(B1); ДЕНЬ(B2)>=ДЕНЬ(B1))); ГОД(B2)-ГОД(B1); ГОД(B2)-ГОД(B1)-1)

Способ 2: Разница в днях / 365

Приблизительный метод (с погрешностью до 1 дня из-за високосных лет):

=ОКРУГЛВНИЗ((B2-B1)/365; 0)

Для более точного результата замените 365 на 365.25 (учитывает високосные годы в среднем).

Способ 3: Условное форматирование

Если вам не нужен числовой результат, а только визуальное выделение ячеек с разницей более N лет, используйте условное форматирование:

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу... и введите:
=DATEDIF(B1;СЕГОДНЯ();"Y")>5

Эта формула выделит ячейки, где разница между датой в B1 и сегодняшним днем превышает 5 лет.

Почему формула с делением на 365 неточная?

Високосные годы добавляют 1 лишний день каждые 4 года. Например, разница между 29.02.2020 и 29.02.2026 составляет ровно 4 года, но деление на 365 даст 4.0027 (ошибка в 1 день). Для точности используйте 365.25 или функцию YEARFRAC с базисом 1.

5. Распространенные ошибки и как их избежать

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

  1. Дата сохранена как текст

    Если дата введена через апостроф ('01.01.2020') или импортирована из внешнего источника, Excel воспринимает ее как текст. Чтобы исправить:

    • 🔄 Выделите ячейку → нажмите на восклицательный знак ! рядом с ячейкой → Преобразовать в дату.
    • 🔄 Используйте функцию ДАТАЗНАЧ: =ДАТАЗНАЧ(B1).
  • Неверный региональный формат

    В российской версии Excel по умолчанию используется формат ДД.ММ.ГГГГ. Если вы введете дату как 01/05/2023, программа может интерпретировать ее как 1 мая (европейский формат) или 5 января (американский формат).

    Решение: зафиксируйте формат ячейки через Формат ячеек → Число → Дата.

  • Отрицательная разница дат

    Если DATEDIF или вычитание дат возвращает отрицательное число, значит, дата конца раньше даты начала. Проверьте порядок ячеек в формуле или используйте АБС:

    =АБС(DATEDIF(B1; B2; "Y"))
  • ⚠️ Внимание: Функция СЕГОДНЯ() обновляется при каждом пересчете листа. Если вам нужна фиксированная дата "на сегодня", замените ее на =ДАТА(2026;5;20) (актуальную дату).

    6. Практический пример: расчет стажа сотрудников

    Допустим, у вас есть таблица с датами приема сотрудников на работу, и вам нужно рассчитать их стаж в годах на текущую дату. Вот пошаговая инструкция:

    1. Подготовка данных

      Создайте таблицу с заголовками:

      ФИОДата приемаСтаж (лет)
      Иванов И.И.15.03.2018=DATEDIF(B2;СЕГОДНЯ();"Y")
      Петрова А.С.01.11.2020=DATEDIF(B3;СЕГОДНЯ();"Y")
    2. Добавление условного форматирования

      Выделите столбец "Стаж (лет)" и создайте правило:

      =И($C2>5; $C2<10)

      Установите зеленый цвет для сотрудников со стажем от 5 до 10 лет.

    3. Автоматическое обновление

      Так как формула использует СЕГОДНЯ(), стаж будет пересчитываться при каждом открытии файла. Чтобы зафиксировать дату на определенный день (например, на 31.12.2023), замените СЕГОДНЯ() на ДАТА(2023;12;31).

    4. Для вывода стажа в формате "X лет Y месяцев" используйте комбинацию:

      =DATEDIF(B2;СЕГОДНЯ();"Y") & " лет, " & DATEDIF(B2;СЕГОДНЯ();"YM") & " мес."

      7. Сравнение методов: какой способ выбрать

      Каждый из рассмотренных методов имеет свои плюсы и минусы. В таблице ниже — сравнение по ключевым критериям:

      МетодТочностьУчет високосных летДробная частьСложность
      DATEDIF с "Y"ВысокаяДаНетНизкая
      YEARFRAC (базис 1)МаксимальнаяДаДаСредняя
      Ручной расчет (ГОД-ГОД)НизкаяНетНетНизкая
      Деление на 365.25СредняяЧастичноДаНизкая
      Формула с ЕСЛИВысокаяДаНетВысокая

      Рекомендации по выбору:

      • 🎯 Для точного целого числа лет (например, возраст) → DATEDIF.
      • 🎯 Для финансовых расчетов (например, амортизация) → YEARFRAC с базисом 1.
      • 🎯 Для быстрой оценки без высокой точности → деление на 365.
      • 🎯 Для отчетов с дробными годамиYEARFRAC + округление.

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

    Можно ли в Excel посчитать разницу между датами в годах, месяцах и днях одновременно?

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

    =DATEDIF(B1;B2;"Y") & " лет, " & DATEDIF(B1;B2;"YM") & " мес., " & DATEDIF(B1;B2;"MD") & " дн."

    Эта формула вернет строку вида "3 лет, 5 мес., 15 дн.".

    Почему функция DATEDIF не отображается в списке функций Excel?

    DATEDIF — это "унаследованная" функция, оставшаяся для совместимости с Lotus 1-2-3. Она не документирована в новых версиях Excel, но продолжает работать. Чтобы ее использовать, вводите название вручную.

    Как посчитать возраст в годах, если дата рождения в одной ячейке, а текущая дата — в другой?

    Используйте:

    =DATEDIF(A2;B2;"Y")

    Где A2 — дата рождения, а B2 — текущая или любая другая дата.

    Можно ли использовать эти формулы в Google Sheets?

    Да, все рассмотренные функции (DATEDIF, YEARFRAC) работают в Google Таблицах без изменений. Синтаксис полностью идентичен Excel.

    Как округлить результат YEARFRAC до 2 знаков после запятой?

    Оберните функцию в ОКРУГЛ:

    =ОКРУГЛ(YEARFRAC(B1;B2;1); 2)