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

Расчёт возраста или стажа в полных годах — одна из самых распространённых задач в Microsoft Excel и Google Таблицах. Казалось бы, что может быть проще: вычесть одну дату из другой и разделить на 365? Но на практике такой подход даёт погрешности из-за високосных лет, неполных месяцев и дней. Например, если сегодня 5 июня 2026 года, а дата рождения — 15 марта 1990, то простой расчёт вернёт 34,23 года, хотя полных лет на самом деле 34 (35 исполнится только 15 марта 2026).

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

Если вам нужно не просто узнать возраст, а, например, автоматически определять пенсионный стаж, срок действия документа или гарантийный период, эти методы помогут избежать ручного пересчёта и ошибок. Все примеры протестированы в Excel 2019–2023 и Google Таблицах, поэтому вы сможете применить их независимо от версии программы.

📊 Для чего вам нужно считать полные года в Excel?
Для расчёта возраста
Для определения стажа
Для контроля сроков документов
Для финансовых расчётов
Другое

1. Стандартный метод: функция DATEDIF

Функция DATEDIF (от англ. DATE DIFFerence) специально создана для расчёта разницы между датами в годах, месяцах или днях. Несмотря на то, что она не документирована в официальной справке Excel, она работает во всех версиях программы и остаётся самым надёжным инструментом для таких задач.

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

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

Для полных лет используем параметр "Y" (от Year). Например:

=DATEDIF(B2; TODAY(); "Y")

где B2 — ячейка с датой рождения, а TODAY() — текущая дата.

Плюсы метода:

  • 🔹 Точно учитывает високосные годы и неполные месяцы.
  • 🔹 Работает даже с отрицательными датами (если конечная дата раньше начальной).
  • 🔹 Поддерживает дополнительные параметры: "M" (месяцы), "D" (дни), "YM" (месяцы без учёта лет).

⚠️ Внимание: Если в ячейке с датой рождения указано только число без года (например, 15.03 вместо 15.03.1990), Excel автоматически подставит текущий год, что приведёт к ошибке. Всегда проверяйте формат ячеек (Формат → Формат ячеек → Дата).

Убедитесь, что обе даты в формате "Дата" (не "Текст" или "Общий")|Проверьте, что начальная дата раньше конечной|Используйте TODAY() для текущей даты, а не фиксированное значение|Тестируйте формулу на крайних случаях (например, 29 февраля)

-->

2. Альтернатива: комбинация YEAR + IF для точного расчёта

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

Формула для расчёта полных лет между датой в ячейке A2 и текущей датой:

=YEAR(TODAY()) - YEAR(A2) - IF(OR(MONTH(TODAY())

Разберём логику:

  1. YEAR(TODAY()) - YEAR(A2) — разница в годах без учёта месяцев и дней.
  2. OR(MONTH(TODAY()) — проверяет, не наступило ли ещё день рождения в текущем году.
  3. IF(...; 1; 0) — если день рождения ещё не был, вычитаем 1 год.

📌 Пример: Если сегодня 10 июня 2026, а дата рождения — 15 декабря 1990, формула вернёт 33 (потому что 34 исполнится только 15 декабря).

3. Использование YEARFRAC для дробных лет с округлением

Функция YEARFRAC возвращает разницу между датами в дробных годах, что удобно для финансовых расчётов (например, начисления процентов). Однако для получения полных лет результат нужно округлить вниз с помощью INT или ROUNDDOWN.

Формула:

=ROUNDDOWN(YEARFRAC(A2; TODAY(); 1); 0)

где 1 — это параметр базиса расчёта (подробнее в таблице ниже).

⚠️ Внимание: Параметр базиса влияет на результат! Например, базис 1 (фактический/фактический) учитывает реальное количество дней в году, а базис 3 (30/360) приближает все месяцы к 30 дням. Для точного расчёта возраста используйте 1.

БазисОписаниеПример расчёта для 15.03.1990 – 10.06.2026
0 или опущенАмериканский (30/360)34.22 года
1Фактический/фактический34.23 года (точный)
2Фактический/36034.25 года
3Фактический/36534.23 года
4Европейский (30/360)34.22 года

После округления ROUNDDOWN все варианты, кроме базиса 1, могут давать погрешность в ±1 день. Например, при базисе 0 дата 29 февраля будет приближена к 28 февраля, что исказит результат.

4. Расчёт полных лет между двумя произвольными датами

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

Вариант 1DATEDIF):

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

например:

=DATEDIF(B2; C2; "Y")

Вариант 2YEAR + IF):

=YEAR(C2) - YEAR(B2) - IF(OR(MONTH(C2)

📌 Пример: Если в B2 указано 01.07.2010, а в C230.06.2026, формула вернёт 13 (полных лет), хотя фактическая разница — 13 лет и 364 дня.

Что будет, если поменять даты местами?

Если начальная дата позже конечной (например, B2=01.01.2026, C2=01.01.2020), функция DATEDIF вернёт ошибку #ЧИСЛО!, а формула с YEAR + IF — отрицательное значение. Чтобы избежать ошибок, добавьте проверку:

=IF(B2>C2; "Ошибка: даты перепутаны"; DATEDIF(B2; C2; "Y"))

5. Автоматическое обновление расчётов при изменении даты

Если вы используете текущую дату (TODAY()) в формулах, Excel будет автоматически пересчитывать возраст при каждом открытии файла. Это удобно для динамических отчётов, но может вызвать замедление работы в больших таблицах.

🔹 Как отключить автоматический пересчёт:

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

⚠️ Внимание: При ручном режиме формулы с TODAY() не будут обновляться, пока вы не нажмёте F9 или не включите автоматический режим обратно. Это может привести к неактуальным данным в отчётах!

💡 Альтернатива: Если нужно зафиксировать дату на момент создания отчёта, замените TODAY() на статическое значение (например, =DATE(2026;6;10)) или скопируйте результат формулы как Значения (Правка → Специальная вставка → Значения).

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

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

  • 🔸 Ошибка #ИМЯ? — возникает, если имя функции написано с опечаткой (например, DATEIF вместо DATEDIF). Проверьте синтаксис!
  • 🔸 Неверный формат даты — если ячейка отображается как дата, но хранится как текст (например, '15.03.1990), формулы не сработают. Исправьте формат через Формат ячеек → Дата.
  • 🔸 Отрицательные значения — если конечная дата раньше начальной, DATEDIF вернёт ошибку. Добавьте проверку с IF.
  • 🔸 Погрешность в 1 год — происходит, если не учтён день рождения в текущем году. Всегда используйте DATEDIF(..., "Y") или формулу с IF.
  • 🔸 Високосный год — 29 февраля может сбивать расчёты. Для точности используйте базис 1 в YEARFRAC.

📊 Тест на ошибки: Проверьте формулу на крайних случаях:

- Дата рождения 29 февраля (високосный год).

- Текущая дата 1 января (начало года).

- Даты совпадают (например, 01.01.2020 и 01.01.2020 — должен вернуть 0).

7. Продвинутые сценарии: возраст в годах и месяцах

Иногда недостаточно знать только полные года — требуется указать возраст с точностью до месяцев (например, 34 года и 3 месяца). Для этого комбинируем DATEDIF с дополнительными параметрами:

Формула:

=DATEDIF(A2; TODAY(); "Y") & " года и " & DATEDIF(A2; TODAY(); "YM") & " месяцев"

Разберём параметры:

- "Y" — полные года.

- "YM" — месяцы, прошедшие с последнего дня рождения.

⚠️ Внимание: Если нужно вывести только месяцы без учёта лет, используйте "M", но это даст общую разницу в месяцах, а не остаток после полных лет.

📌 Пример: Для даты рождения 15.03.1990 и текущей даты 10.06.2026 формула вернёт: 34 года и 3 месяца.

Для корректного склонения (например, "1 год" вместо "1 года") добавьте вложенные IF:

=DATEDIF(A2; TODAY(); "Y") & IF(DATEDIF(A2; TODAY(); "Y")=1; " год"; IF(OR(AND(DATEDIF(A2; TODAY(); "Y")>1; DATEDIF(A2; TODAY(); "Y")<5); DATEDIF(A2; TODAY(); "Y")>20); " года"; " лет")) & " и " & DATEDIF(A2; TODAY(); "YM") & " месяцев"

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

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

Да, все приведённые формулы (DATEDIF, YEARFRAC, TODAY) работают в Google Таблицах без изменений. Исключение — функция ROUNDDOWN, которую можно заменить на FLOOR или INT.

Как посчитать полные года между датами в формате "месяц.год" (например, "03.1990")?

Если дата указана без дня (например, 03.1990), Excel воспримет её как 03.01.1990. Чтобы избежать ошибок, преобразуйте текст в дату с помощью DATEVALUE или ДАТАЗНАЧ (в русскоязычной версии):

=DATEDIF(ДАТАЗНАЧ("01." & A2); TODAY(); "Y")

где A2 содержит 03.1990.

Почему DATEDIF возвращает ошибку #ЧИСЛО!?

Ошибка возникает в трёх случаях:

  1. Начальная дата позже конечной (например, DATEDIF("01.01.2026"; "01.01.2020"; "Y")).
  2. Одна из дат не распознаётся как дата (проверьте формат ячейки).
  3. Используется несуществующая дата (например, 31.02.2020).

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

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

=IF(DATEDIF(A2; TODAY(); "M")>=12; DATEDIF(A2; TODAY(); "Y"); 0)

Эта формула вернёт 0, если с даты в A2 прошло меньше 12 месяцев.

Можно ли автоматически подсвечивать ячейки, если полных лет больше заданного значения?

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

  1. Выделите диапазон с возрастом.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу... и введите:
    =DATEDIF($A2; TODAY(); "Y")>30

    (где 30 — пороговое значение лет).

  4. Задайте цвет заполнения (например, зелёный для "больше 30").