Расчёт возраста в Excel по дате рождения: 5 рабочих способов с примерами

Введение: зачем и кому нужен расчёт возраста в Excel

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

В этой статье мы разберём 5 проверенных способов расчёта возраста — от элементарных формул до сложных конструкций с учётом точных интервалов. Вы узнаете, как избежать ошибки #ЗНАЧ!, почему функция ДАТАРАЗН не всегда даёт ожидаемый результат, и как сделать так, чтобы возраст обновлялся автоматически при открытии файла. Особое внимание уделим практическим примерам: расчёт возраста для списка сотрудников, определение возрастной категории (ребёнок/взрослый/пенсионер) и даже прогнозирование даты выхода на пенсию.

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

Способ 1: Простейшая формула с функцией РАЗНДАТ (DATEDIF)

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

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

Где единица_измерения может принимать значения:

  • 📅 "y" — полные годы
  • 📆 "m" — полные месяцы
  • 🕒 "d" — дни
  • 📊 "ym" — месяцы без учёта лет
  • 📈 "yd" — дни без учёта лет
  • 🔄 "md" — разница в днях без учёта месяцев и лет

Пример для расчёта возраста в годах:

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

Где B2 — ячейка с датой рождения, а СЕГОДНЯ() возвращает текущую дату.

Ячейка с датой рождения имеет формат "Дата"|Текущая дата обновляется автоматически (функция СЕГОДНЯ)|Единица измерения указана в кавычках ("y")|Нет пробелов перед/после точек с запятой в формуле

-->

⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Excel, но работает во всех версиях программы. Однако в Google Таблицах её нет — там используйте =DATEDIF(B2; TODAY(); "y").

Способ 2: Универсальная формула с учётом месяцев и дней

Если вам нужно получить возраст в формате "X лет, Y месяцев, Z дней", одна функция РАЗНДАТ не справится. Придётся комбинировать несколько вычислений:

=РАЗНДАТ(B2; СЕГОДНЯ(); "y") & " лет, " & РАЗНДАТ(B2; СЕГОДНЯ(); "ym") & " мес., " & РАЗНДАТ(B2; СЕГОДНЯ(); "md") & " дн."

Эта формула:

  1. Считает полные годы ("y")
  2. Добавляет месяцы, оставшиеся после вычета полных лет ("ym")
  3. Добавляет дни, оставшиеся после вычета лет и месяцев ("md")

Результат будет выглядеть так: "25 лет, 3 мес., 14 дн.". Чтобы избежать ошибок с падежами (например, "1 лет"), используйте функцию ЕСЛИ:

=ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();"y")=1; "год"; ЕСЛИ(МЕЖДУ(РАЗНДАТ(B2;СЕГОДНЯ();"y");2;4); "года"; "лет"))
Формула Результат для даты рождения 15.05.1990 (на 10.10.2023) Примечание
=РАЗНДАТ(B2;СЕГОДНЯ();"y") 33 Только полные годы
=РАЗНДАТ(B2;СЕГОДНЯ();"m") 403 Полные месяцы
=РАЗНДАТ(B2;СЕГОДНЯ();"ym") 4 Месяцы с последнего дня рождения
=РАЗНДАТ(B2;СЕГОДНЯ();"md") 25 Дни с последнего месяца

Способ 3: Расчёт возраста на определённую дату (не текущую)

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

=РАЗНДАТ(B2; ДАТА(2020;6;1); "y")

Эта формула вернёт возраст на 1 июня 2020 года. Если дата указана в отдельной ячейке (например, C2), используйте:

=РАЗНДАТ(B2; C2; "y")

Пример применения: расчёт стажа работы на момент увольнения или возраста ребёнка на дату поступления в школу.

Ежедневно (работа с кадрами/учёба)|Несколько раз в месяц|Рядом (1-2 раза в год)|Первый раз столкнулся с задачей

-->

⚠️ Внимание: Если в ячейке с датой рождения стоит значение типа 15.05.1990, но Excel воспринимает его как текст (выравнивание влево), формула вернёт ошибку. Чтобы исправить, выделите ячейку и нажмите Ctrl + 1 → выберите формат Дата.

Способ 4: Автоматическое определение возрастной категории

Допустим, вам нужно не просто рассчитать возраст, а автоматически определить категорию: "Ребёнок" (до 18 лет), "Взрослый" (18–55 лет), "Пенсионер" (55+ для женщин, 60+ для мужчин). Для этого используйте вложенную функцию ЕСЛИ:

=ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();"y")<18; "Ребёнок";

ЕСЛИ(И(РАЗНДАТ(B2;СЕГОДНЯ();"y")>=18; РАЗНДАТ(B2;СЕГОДНЯ();"y")<55); "Взрослый";

ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();"y")>=60; "Пенсионер"; "Предпенсионный возраст")))

Для учёта пола добавьте дополнительное условие. Например, если в ячейке A2 указан пол ("М" или "Ж"):

=ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();"y")<18; "Ребёнок";

ЕСЛИ(И(РАЗНДАТ(B2;СЕГОДНЯ();"y")>=18;

РАЗНДАТ(B2;СЕГОДНЯ();"y")<(ЕСЛИ(A2="М";60;55))); "Взрослый"; "Пенсионер"))

Эту формулу удобно использовать для:

  • 📋 Сегментации клиентской базы (например, для таргетированных акций)
  • 🏫 Формирования списков учеников по классам
  • 💼 Анализа возрастной структуры сотрудников в компании
Как учесть региональные особенности пенсионного возраста?

В некоторых странах пенсионный возраст отличается от стандартных 55/60 лет. Например, в Норвегии — 67 лет, во Франции — 62 года. Чтобы адаптировать формулу, замените цифры в условии на актуальные для вашего региона. Также можно вынести пенсионный возраст в отдельную ячейку (например, D1 для мужчин и E1 для женщин) и ссылаться на неё в формуле:

=ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();"y")>=(ЕСЛИ(A2="М";$D$1;$E$1)); "Пенсионер"; ...)

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

Все предыдущие способы дают приблизительный результат, так как не учитывают точное количество дней между датами. Для максимальной точности используйте комбинацию функций ДАТА, ГОД, МЕСЯЦ и ДЕНЬ:

=ЕСЛИ(ИЛИ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(B2); ДЕНЬ(B2))>СЕГОДНЯ();

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

ГОД(СЕГОДНЯ())-ГОД(B2)-1;

ГОД(СЕГОДНЯ())-ГОД(B2))

Эта формула:

  1. Проверяет, был ли уже день рождения в этом году.
  2. Если нет — вычитает 1 из разницы лет (так как полных лет ещё не исполнилось).
  3. Если да — возвращает разницу лет без корректировки.

Для учёта месяцев и дней добавьте:

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

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

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

  1. Ошибка #ЗНАЧ! — возникает, если ячейка с датой рождения содержит текст или неверный формат. Решение: проверьте формат ячейки (Ctrl + 1Дата).
  2. Неправильный результат при високосном годе — функции РАЗНДАТ может ошибаться на 1 день. Решение: используйте точный метод из Способа 5.
  3. Возраст не обновляется — если вместо СЕГОДНЯ() указана фиксированная дата. Решение: замените дату на СЕГОДНЯ() или обновите файл (F9).
  4. Отрицательное значение — если дата рождения позже текущей даты. Решение: добавьте проверку =ЕСЛИ(B2>СЕГОДНЯ(); "Ошибка"; РАЗНДАТ(...)).

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

=РАЗНДАТ(B2;СЕГОДНЯ();"y") & " " &

ЕСЛИ(ИЛИ(МОД(РАЗНДАТ(B2;СЕГОДНЯ();"y");100)>10;

МОД(РАЗНДАТ(B2;СЕГОДНЯ();"y");100)=0);

"лет";

ЕСЛИ(МОД(РАЗНДАТ(B2;СЕГОДНЯ();"y");10)=1; "год"; ЕСЛИ(МОД(РАЗНДАТ(B2;СЕГОДНЯ();"y");10)<5; "года"; "лет")))

Практические примеры применения

Расчёт возраста в Excel полезен в десятках сценариев. Вот несколько готовых решений:

1. Автоматический расчёт стажа работы

Если в ячейке B2 дата приёма на работу, а в C2 — дата увольнения (или СЕГОДНЯ() для текущих сотрудников):

=РАЗНДАТ(B2; ЕСЛИ(C2=""; СЕГОДНЯ(); C2); "y") & " лет, " & РАЗНДАТ(B2; ЕСЛИ(C2=""; СЕГОДНЯ(); C2); "m") & " мес."

2. Определение знака зодиака

Комбинируйте функции ДЕНЬ и МЕСЯЦ с ЕСЛИ:

=ЕСЛИ(ИЛИ(И(МЕСЯЦ(B2)=1; ДЕНЬ(B2)>=20); И(МЕСЯЦ(B2)=2; ДЕНЬ(B2)<=18)); "Водолей";

ЕСЛИ(ИЛИ(И(МЕСЯЦ(B2)=2; ДЕНЬ(B2)>=19); И(МЕСЯЦ(B2)=3; ДЕНЬ(B2)<=20)); "Рыбы"; ...))

3. Прогноз даты выхода на пенсию

Если в B2 дата рождения, а в D1 пенсионный возраст (например, 60):

=ДАТА(ГОД(B2)+$D$1; МЕСЯЦ(B2); ДЕНЬ(B2))

Форматируйте ячейку как Дата, чтобы получить результат типа 15.05.2050.

Анализ кадрового состава|Школьные/студенческие отчёты|Медицинские карты|Личное планирование|Другое

-->

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

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

Да, все формулы из этой статьи работают и в Google Таблицах, за исключением функции РАЗНДАТ — там она называется DATEDIF. Пример:

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

Также вместо СЕГОДНЯ() используйте TODAY().

Как рассчитать возраст в годах с десятичной дробью (например, 25.5 лет)?

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

=РАЗНДАТ(B2; СЕГОДНЯ(); "y") + (РАЗНДАТ(B2; СЕГОДНЯ(); "ym") + РАЗНДАТ(B2; СЕГОДНЯ(); "md")/30)/12

Эта формула преобразует месяцы и дни в доли года. Например, 6 месяцев = 0.5 года.

Почему функция РАЗНДАТ иногда даёт неверный результат?

Функция РАЗНДАТ может ошибаться на 1 день из-за:

  • Неучёта времени (Excel оперирует только датами без времени).
  • Високосных лет (29 февраля).
  • Неправильного формата ячеек.

Для критических расчётов используйте Способ 5 из этой статьи.

Как посчитать возраст для большого списка дат рождения?

Выделите столбец с датами рождения, затем:

  1. Введите формулу для первой ячейки (например, =РАЗНДАТ(B2;СЕГОДНЯ();"y")).
  2. Наведите курсор на правый нижний угол ячейки с формулой (появится крестик).
  3. Дважды кликните или протяните вниз до конца списка.

Excel автоматически скопирует формулу для всех строк.

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

Да, если вместо СЕГОДНЯ() использовать фиксированную дату в отдельной ячейке (например, D1), а рядом разместить кнопку с макросом:

Sub ОбновитьДата()

Range("D1").Value = Date

End Sub

Привяжите этот макрос к кнопке через Вставка → Кнопка (элемент управления).