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

Почему простой вычитание дат не всегда работает

На первый взгляд, задача кажется элементарной: взять две даты, вычесть одну из другой — и вуаля, получим разницу в годах. Но Excel хранит даты как последовательные числа (где 1 = 1 января 1900 года), и простое вычитание вернёт количество дней, а не лет. Например, между 01.01.2020 и 01.01.2023 разница составит 1096 дней, но никак не 3 года.

Кроме того, есть подводные камни:

  • 📅 Високосные годы: 29 февраля может сбить расчёты, если одна из дат приходится на этот день.
  • 🎂 Дни рождения: Нужно ли учитывать полный год только после точной даты (например, 25.06.2020 — 24.06.2023 = 2 года, а не 3)?
  • 📊 Частичные периоды: Если даты не совпадают по месяцу/дню, как округлять результат — в большую или меньшую сторону?

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

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

Способ 1: Функция DATEDIF — самый точный метод

Функция DATEDIF (от англ. Date Difference) специально создана для расчёта разницы между датами. Она скрыта в списке функций Excel, но работает во всех версиях, включая Excel 365 и Excel 2019. Синтаксис:

=DATEDIF(начальная_дата; конечная_дата; "Y")

Где "Y" — это код для вычисления полных лет. Например:

ФормулаНачальная датаКонечная датаРезультат
=DATEDIF("15.03.2020"; "14.03.2023"; "Y")15.03.202014.03.20232
=DATEDIF("01.01.2020"; "31.12.2022"; "Y")01.01.202031.12.20222
=DATEDIF("29.02.2020"; "01.03.2023"; "Y")29.02.202001.03.20233

⚠️ Внимание: Если конечная дата раньше начальной, DATEDIF вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, используйте функцию IF для проверки:

=ЕСЛИ(B2

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

Конечная дата не раньше начальной

Для частичных лет используйте код "YM" (месяцы) или "MD" (дни)-->

Способ 2: Формула с YEAR и округлением

Если DATEDIF кажется слишком "закрытой" функцией, можно обойтись стандартными инструментами. Формула:

=ОКРУГЛВНИЗ((КОНМЕСЯЦА(B2;0)-КОНМЕСЯЦА(A2;0))/365;0)

Здесь:

  • 🔢 КОНМЕСЯЦА(дата;0) — возвращает последнюю дату месяца (например, для 15.03.2020 вернёт 31.03.2020). Это нужно, чтобы избежать проблем с частичными месяцами.
  • 📉 ОКРУГЛВНИЗ(...,0) — округляет результат до целого числа в меньшую сторону (например, 2.99 станет 2).

🔹 Плюс метода: работает даже если DATEDIF недоступна (например, в некоторых локализациях Excel).

🔸 Минус: может давать погрешность ±1 день из-за високосных лет.

Способ 3: Вычисление с учётом дня рождения (точная дата)

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

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

Разберём на примере:

  • 🎂 Дата рождения: 15.07.1990
  • 📅 Текущая дата: 10.07.2023
  • 📊 Результат: 31 (хотя фактически прошло 32 года, но день рождения ещё не наступил).

Этот метод идеален для:

  • 👶 Расчёта возраста сотрудников или клиентов.
  • 📅 Определения стажа работы с учётом точной даты приёма.
  • 🎁 Автоматического напоминания о днях рождения в CRM-системах.

Почему нельзя использовать просто YEAR(B2)-YEAR(A2)?

Без проверки дня и месяца формула =ГОД(B2)-ГОД(A2) всегда будет возвращать разницу лет по календарю, игнорируя, наступил ли фактический "юбилей". Например, для дат 31.12.2020 и 01.01.2021 результат будет 1 год, хотя прошёл всего 1 день!

Способ 4: Формула для частичных лет (с десятичными)

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

=DATEDIF(A2; B2; "Y") + DATEDIF(A2; B2; "YM")/12

Где:

  • DATEDIF(..., "Y") — полные годы.
  • DATEDIF(..., "YM") — оставшиеся месяцы (преобразуем в доли года, разделив на 12).

Пример:

  • 📅 Начало: 01.01.2020
  • 📅 Конец: 01.07.2023
  • 📊 Результат: 3.5 (3 года и 6 месяцев = 3.5 года).

⚠️ Внимание: Если вам нужна высокая точность (например, для процентных ставок), добавьте к формуле учёт дней:
=DATEDIF(A2; B2; "Y") + DATEDIF(A2; B2; "YM")/12 + (ДЕНЬ(B2)-ДЕНЬ(ДАТА(ГОД(B2); МЕСЯЦ(A2); ДЕНЬ(A2))))/365

Эта формула учитывает даже дни между датами с одинаковым месяцем и годом.

Способ 5: Power Query для массовой обработки

Если у вас тысячи строк с датами, ручной ввод формул неэффективен. В этом случае поможет Power Query (доступен в Excel 2016+):

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

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

  4. Нажмите Закрыть и загрузить — данные обновятся автоматически.

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

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

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

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

ОшибкаПричинаРешение
#ЗНАЧ!Ячейка содержит текст, а не дату.Используйте =ДАТАЗНАЧ(A2) для преобразования.
Неверный результат для 29.02Excel не распознаёт 29 февраля в невисокосном году.Замените дату на 01.03 или используйте DATEDIF.
Отрицательное число летКонечная дата раньше начальной.Добавьте проверку =ЕСЛИ(B2.
Результат на 1 год больше/меньшеНе учтён день или месяц.Используйте формулу с МЕСЯЦ и ДЕНЬ (см. Способ 3).

🔍 Как проверить формат ячейки:

  • Выделите ячейку → нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  • Вкладка Число → категория должна быть Дата.
  • Если там Текстовый, используйте =ДАТАЗНАЧ() для исправления.

⚠️ Внимание: В Excel для Mac функция DATEDIF может вести себя иначе из-за различий в системе дат. Перед использованием проверьте результат на тестовых данных!

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

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

Да, но с ограничениями:

  1. Выделите две ячейки с датами.
  2. На вкладке Главная в группе Редактирование выберите Вычитание (значок ).
  3. Excel покажет разницу в днях — разделите её на 365 вручную.
Минус: такой метод не учитывает високосные годы и даёт приблизительный результат.

Почему DATEDIF выдаёт ошибку #ИМЯ?

Это означает, что Excel не распознаёт функцию. Возможные причины:

  • 🌍 Неправильная локализация (в некоторых версиях функция называется ДАТРАЗН).
  • 📋 Опечатка в названии (например, DATEIF вместо DATEDIF).
  • 🖥️ Устаревшая версия Excel (обновите программу).

Решение: используйте альтернативные формулы из Способа 2 или Способа 3.

Как посчитать годы между сегодняшней датой и датой в ячейке?

Используйте функцию СЕГОДНЯ():

=DATEDIF(A2; СЕГОДНЯ(); "Y")

🔹 Важно: Функция СЕГОДНЯ() пересчитывается при каждом открытии файла. Чтобы зафиксировать текущую дату, нажмите Ctrl+; (вставится статическая дата).

Можно ли учитывать только рабочие годы (без выходных)?

Да, но потребуется комбинация функций:

=ЦЕЛОЕ(ЧИСТРАБДНИ(A2; B2)/250)

Где 250 — среднее количество рабочих дней в году (можно скорректировать под ваш график). Для точного расчёта используйте ЧИСТРАБДНИ.МЕЖД с указанием праздников.

Как автоматически подсвечивать ячейки, если разница превышает N лет?

Используйте Условное форматирование:

  1. Выделите ячейки с результатом (например, столбец C).
  2. На вкладке Главная выберите Условное форматирование → Создать правило.
  3. Тип правила: Использовать формулу....
  4. Введите формулу: =C2>10 (где 10 — ваш порог).
  5. Задайте цвет заливки (например, красный) и нажмите ОК.