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

Почему стандартные методы дают ошибки — и как их избежать

Вы когда-нибудь пробовали вычесть дату рождения из текущей даты в Excel, чтобы получить возраст — и получали странные числа вроде 45678 вместо 32? Это классическая ошибка новичков. Дело в том, что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), и простое вычитание возвращает количество дней между датами, а не годы.

Но даже если вы знаете про функцию ДАТАРАЗН() (DATEDIF), результаты могут быть неточными. Например, она не учитывает високосные годы при расчете полных лет, а если человек родился 29 февраля — формула вообще вернёт ошибку. В этой статье мы разберём 5 надёжных методов, которые работают в 99% случаев, включая edge-cases с некорректными данными и будущими датами.

Особое внимание уделим:

  • 🔹 Автоматическому обновлению возраста при открытии файла (без ручного ввода текущей даты)
  • 🔹 Обработке ошибок типа #ЧИСЛО! или #ЗНАЧ! при неверном формате ячеек
  • 🔹 Расчёту стажа в годах/месяцах/днях для кадровых документов

📊 Какой способ расчета возраста вы используете чаще?
Ручной ввод
Функция ДАТАРАЗН
Формула с ЦЕЛОЕ
Другие функции
Не знаю, как это делать

Метод 1: Базовая формула с ЦЕЛОЕ (для быстрого результата)

Если вам нужно приблизительное количество полных лет без учёта месяцев и дней, используйте комбинацию функций ЦЕЛОЕ() (INT) и ГОД() (YEAR). Эта формула работает даже в старых версиях Excel (начиная с 2003 года):

=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)

Где:

  • 📌 A2 — ячейка с датой рождения
  • 📌 365,25 — среднее количество дней в году с учётом високосных лет
  • 📌 СЕГОДНЯ() — автоматически подставляет текущую дату

⚠️ Внимание: Эта формула даёт погрешность ±1 день для людей, родившихся в конце февраля — начале марта. Например, если сегодня 1 марта 2026 года, а дата рождения 28 февраля 2000 года, формула вернёт 24 вместо корректных 23 (потому что 2026 год — високосный).

Ячейка с датой рождения отформатирована как "Дата"|Нет пустых ячеек в диапазоне|Текущая дата не раньше даты рождения|Високосные годы не критичны для задачи-->

Метод 2: Точный расчёт с ДАТАРАЗН (учёт месяцев и дней)

Функция ДАТАРАЗН() (DATEDIF) — самый популярный инструмент для расчёта возраста, но она скрыта в интерфейсе Excel (её не найдёте через мастер функций). Введите её вручную:

=ДАТАРАЗН(A2;СЕГОДНЯ();"Y")

Аргументы:

  • 📅 A2 — дата рождения
  • 📅 СЕГОДНЯ() — текущая дата
  • 🔤 "Y" — формат вывода ("Y" = полные годы, "M" = месяцы, "D" = дни)

Чтобы получить возраст в формате XX лет, YY месяцев, ZZ дней, комбинируйте функцию:

=ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " лет, " & ДАТАРАЗН(A2;СЕГОДНЯ();"YM") & " мес., " & ДАТАРАЗН(A2;СЕГОДНЯ();"MD") & " дней"
⚠️ Внимание: Если дата рождения позже текущей даты (например, введён 2050 год), функция вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, добавьте проверку:
=ЕСЛИ(A2>СЕГОДНЯ();"Ошибка даты";ДАТАРАЗН(A2;СЕГОДНЯ();"Y"))
ФорматПример выводаФормула
"Y"32=ДАТАРАЗН(A2;СЕГОДНЯ();"Y")
"M"396=ДАТАРАЗН(A2;СЕГОДНЯ();"M")
"D"12043=ДАТАРАЗН(A2;СЕГОДНЯ();"D")
"YM"4=ДАТАРАЗН(A2;СЕГОДНЯ();"YM")
"MD"15=ДАТАРАЗН(A2;СЕГОДНЯ();"MD")

Метод 3: Учёт високосных лет (для юридических документов)

Для кадровых отделов и бухгалтерии важна абсолютная точность — даже один лишний день может исказить расчёт стажа. Используйте эту формулу, которая учитывает високосные годы и возвращает возраст в годах.месяцах (например, 32,5 = 32 года и 6 месяцев):

=РАЗНДАТ(A2;СЕГОДНЯ();"Y") + РАЗНДАТ(A2;СЕГОДНЯ();"YM")/12

Если нужен результат в полных годах с округлением вниз (как требует трудовой кодекс), оберните формулу в ЦЕЛОЕ():

=ЦЕЛОЕ(РАЗНДАТ(A2;СЕГОДНЯ();"Y") + РАЗНДАТ(A2;СЕГОДНЯ();"YM")/12)

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

  • 🎨 Выделите ячейки с возрастом
  • 🎨 Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Больше...
  • 🎨 Задайте правило: "Значение > 60" → красный текст (для пенсионеров)

Почему 29 февраля — проблема для Excel

Excel считает 29 февраля 2020 года и 1 марта 2020 года как одну и ту же дату в формате "год.месяц" (2020.02), хотя фактически это разные дни. Чтобы избежать ошибок, используйте функцию ДАТА() для нормализации дат:

=ДАТА(ГОД(A2);МЕСЯЦ(A2);ДЕНЬ(A2))

Метод 4: Расчёт возраста для будущих дат (прогнозирование)

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

=ДАТАРАЗН(A2;ДАТА(2030;1;1);"Y") & " лет будет на 01.01.2030"

Для динамического расчёта (например, "возраст через 5 лет"):

=ДАТАРАЗН(A2;ДАТА(ГОД(СЕГОДНЯ())+5;МЕСЯЦ(СЕГОДНЯ());ДЕНЬ(СЕГОДНЯ()));"Y")

⚠️ Внимание: Если будущая дата попадает на 29 февраля невисокосного года (например, 2026), Excel автоматически сдвинет её на 1 марта. Чтобы избежать этого, используйте проверку:

=ЕСЛИ(И(ДЕНЬ(A2)=29;МЕСЯЦ(A2)=2;НЕ(ОСТАТ(ГОД(ДАТА(2026;2;29));4)=0));ДАТА(ГОД(ДАТА(2026;2;29));3;1);ДАТА(2026;2;29))

Метод 5: Обработка ошибок в данных (защита от сбоев)

Реальные данные часто содержат ошибки: пустые ячейки, текст вместо дат, даты в формате DD.MM.YYYY вместо MM/DD/YYYY. Чтобы формула не ломалась, добавьте проверки:

=ЕСЛИОШИБКА(

ЕСЛИ(

A2="";"Нет данных";

ЕСЛИ(

ТИП(A2)=1;

ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " лет";

"Неверный формат"

)

);

"Ошибка"

)

Расшифровка:

  • 🔍 ЕСЛИОШИБКА — перехватывает все ошибки (#ЧИСЛО!, #ЗНАЧ! и др.)
  • 🔍 A2="" — проверка на пустую ячейку
  • 🔍 ТИП(A2)=1 — проверка, что в ячейке число (дата в Excel — это число)

Для массовой очистки данных используйте Power Query:

  1. 📊 Выделите диапазон с датами
  2. 📊 Перейдите в Данные → Из таблицы/диапазона
  3. 📊 В редакторе Power Query выберите столбец → Преобразовать → Формат даты
  4. 📊 Нажмите Закрыть и загрузить

Продвинутые приёмы: возраст в годах с учётом временных зон

Если вы работаете с международными данными, где даты рождения указаны в разных временных зонах, используйте ВРЕМЯ() для корректировки. Например, чтобы привести дату к московскому времени:

=ДАТАРАЗН(A2 + ВРЕМЯ(3;0;0);СЕГОДНЯ();"Y")

Где ВРЕМЯ(3;0;0) — добавляет 3 часа к дате рождения (если она была в UTC). Для автоматизации:

=ДАТАРАЗН(A2 + ВРЕМЯ(B2;0;0);СЕГОДНЯ();"Y")

Где B2 — ячейка с разницей в часах между временной зоной даты рождения и текущей зоной.

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

ГородЧасовая зонаКорректировка (часы)
ЛондонGMT+00
МоскваGMT+33
Нью-ЙоркGMT-5-5
ТокиоGMT+99

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

Почему функция ДАТАРАЗН не работает в Excel Online?

Функция ДАТАРАЗН (DATEDIF) доступна во всех версиях Excel, включая Excel Online. Если она не работает:

  • 🔹 Проверьте регион: в некоторых локализациях функция называется РАЗНДАТ
  • 🔹 Убедитесь, что даты введены корректно (не как текст)
  • 🔹 Попробуйте ввести функцию вручную, а не через мастер

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

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

=ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " г. " & ДАТАРАЗН(A2;СЕГОДНЯ();"YM") & " мес."

Для детей до 1 года укажите только месяцы:

=ЕСЛИ(ДАТАРАЗН(A2;СЕГОДНЯ();"Y")=0;ДАТАРАЗН(A2;СЕГОДНЯ();"M") & " мес.";ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " г. " & ДАТАРАЗН(A2;СЕГОДНЯ();"YM") & " мес.")

Можно ли автоматически обновлять возраст при открытии файла?

Да, функция СЕГОДНЯ() пересчитывается при каждом открытии книги. Если нужно фиксировать возраст на определённую дату, замените СЕГОДНЯ() на конкретную дату (например, ДАТА(2026;6;1)). Чтобы отключить автоматический пересчёт:

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

Как посчитать средний возраст группы людей?

Используйте функцию СРЗНАЧ для столбца с возрастом:

=СРЗНАЧ(Диапазон_с_возрастами)

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

=СРЗНАЧ(ЕСЛИОШИБКА(Диапазон_формул;0))

Что делать, если дата рождения в формате "1990 год"?

Преобразуйте текст в дату с помощью:

=ДАТА(ЗНАЧ(ЛЕВСИМВ(A2;4));1;1)

Где A2 содержит текст "1990 год". Для формата "май 1990":

=ДАТА(ЗНАЧ(ПРАВСИМВ(A2;4));ПОИСКПОЗ(ЛЕВСИМВ(A2;3);{"янв";"фев";"мар";"апр";"май";"июн";"июл";"авг";"сен";"окт";"ноя";"дек"};0);1)