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

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

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

1. Базовый способ: простая разница дат

Самый очевидный метод — вычесть дату рождения из текущей даты или другой контрольной даты. Например, если в ячейке A2 указана дата рождения (15.05.1990), а в B2 нужно получить возраст на сегодня, формула будет такой:

=ТДАТА()-A2

Проблема этого подхода в том, что результат отобразится не в годах, а в количестве дней (например, 12345). Чтобы преобразовать дни в годы, разделите результат на 365:

=ЦЕЛОЕ((ТДАТА()-A2)/365)
⚠️ Внимание: Эта формула не учитывает високосные годы! Для точного расчёта используйте методы из следующих разделов.

Если вам нужно получить возраст не на сегодня, а на конкретную дату (например, на 01.01.2026), замените ТДАТА() на ячейку с этой датой:

=ЦЕЛОЕ((D2-A2)/365)

где D2 — ячейка с контрольной датой.

📊 Какой формат даты вы чаще используете в Excel?
ДД.ММ.ГГГГ
ММ/ДД/ГГГГ
ГГГГ-ММ-ДД
Другой

2. Точный расчёт с учётом високосных годов

Для корректного учёта високосных лет (когда в феврале 29 дней) используйте функцию РАЗНДАТ. Она возвращает разницу между двумя датами в годах, месяцах или днях. Синтаксис:

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

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

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

Пример результата:

  • 📅 Если дата рождения 15.05.1990, а сегодня 10.10.2023 → результат 33 (даже если день рождения ещё не был в этом году).
  • 🔄 Функция автоматически учитывает високосные годы, например, разница между 29.02.2020 и 29.02.2026 будет ровно 4 года.

Единица измерения Описание Пример результата
"y" Полные годы 33 (для 1990–2023)
"m" Полные месяцы 405
"d" Полные дни 12345
"ym" Месяцы без учёта лет 5 (если разница 33 года и 5 месяцев)
"md" Дни без учёта лет и месяцев 15

3. Возраст в годах, месяцах и днях

Чтобы получить возраст в формате 33 года 5 месяцев 15 дней, комбинируйте РАЗНДАТ с текстовыми функциями. Пример формулы:

=РАЗНДАТ(A2;ТДАТА();"y") & " года " & РАЗНДАТ(A2;ТДАТА();"ym") & " месяцев " & РАЗНДАТ(A2;ТДАТА();"md") & " дней"

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

  • 📊 Годы: =РАЗНДАТ(A2;ТДАТА();"y")
  • 📅 Месяцы: =РАЗНДАТ(A2;ТДАТА();"ym")
  • 🕒 Дни: =РАЗНДАТ(A2;ТДАТА();"md")
⚠️ Внимание: Если дата рождения в текущем году ещё не наступила (например, сегодня 10.10.2023, а день рождения 15.12.1990), формула вернёт количество месяцев и дней с прошлого дня рождения. Чтобы исправить это, используйте условную логику (см. раздел 5).

Ячейки с датами имеют формат "Дата" (проверьте в Главная → Формат → Формат ячеек)

Удалены пробелы и лишние символы в датах (например, "15.05.1990 " → "15.05.1990")

Текущая дата фиксирована в ячейке (если не используете ТДАТА())

Создана резервная копия таблицы (на случай ошибок в формулах)

-->

4. Динамический расчёт с автоматическим обновлением

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

Пример динамической формулы для возраста в годах:

=ЕСЛИ(A2=""; ""; РАЗНДАТ(A2; ТДАТА(); "y"))

Здесь добавлена проверка на пустую ячейку (ЕСЛИ(A2=""; ""; ...)), чтобы избежать ошибок #ЗНАЧ!. Чтобы обновить все расчёты вручную, нажмите F9.

Если вы работаете с большой таблицей (тысячи строк), волатильные функции могут замедлить производительность. В этом случае:

  • 📌 Замените ТДАТА() на фиксированную дату в отдельной ячейке (например, =СЕГОДНЯ() в Z1, а в формулах ссылайтесь на Z1).
  • 🔄 Используйте Вставить → Значения (Ctrl+Shift+V), чтобы заменить формулы на статические значения после расчёта.
Как ускорить работу с большими таблицами?

Если в вашей таблице больше 10 000 строк с формулами РАЗНДАТ и ТДАТА(), Excel может тормозить. Решения:

1. Отключите автоматический пересчёт: перейдите в Формулы → Параметры вычислений → Вручную и обновляйте данные по кнопке F9.

2. Используйте Power Query: импортируйте данные и рассчитайте возраст на этапе загрузки (без формул в ячейках).

3. Разбейте на листы: храните сырые данные на одном листе, а расчёты — на другом, ссылаясь на первый через =Лист1!A2.

5. Учёт будущих дат и ошибок

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

=ЕСЛИОШИБКА(РАЗНДАТ(A2; ТДАТА(); "y"); "Дата в будущем")

Для более гибкой обработки используйте вложенные условия:

=ЕСЛИ(A2>ТДАТА(); "Дата в будущем";

ЕСЛИ(A2=""; "Нет данных";

РАЗНДАТ(A2; ТДАТА(); "y")))

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

=ЕСЛИ(ИЛИ(A2=""; A2>ТДАТА()); "Ошибка";

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

РАЗНДАТ(A2; ТДАТА(); "y")-1;

РАЗНДАТ(A2; ТДАТА(); "y")))

Эта формула возвращает возраст "по факту": если день рождения в этом году ещё не наступил, она отнимает 1 год от результата. Например, для даты рождения 15.12.1990 и текущей даты 10.10.2023 результат будет 32 (а не 33).

6. Расчёт возраста для фильтрации и сортировки

Часто возраст нужно рассчитывать не для отображения, а для дальнейшей обработки данных — например, чтобы отфильтровать сотрудников старше 40 лет или клиентов младше 18. В этом случае:

  1. Создайте отдельный столбец с возрастом в годах (например, столбец B).
  2. Примените условное форматирование или фильтр:
    • 🔍 Для фильтра: Данные → Фильтр → Числовые фильтры → Больше чем и укажите значение (например, 40).
    • 🎨 Для форматирования: Главная → Условное форматирование → Правила выделения ячеек → Больше чем.

Пример формулы для выделения несовершеннолетних (возраст < 18):

=РАЗНДАТ(A2; ТДАТА(); "y")<18

Если вам нужно посчитать количество людей в возрастном диапазоне (например, 25–30 лет), используйте функцию СЧЁТЕСЛИМН:

=СЧЁТЕСЛИМН(B2:B100; ">25"; B2:B100; "<=30")

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

Почему вместо возраста отображается дата в формате ######?

Это происходит, если столбец слишком узкий для отображения числа. Растяните столбец двойным кликом по правой границе заголовка или измените формат ячейки на Общий (Ctrl+1 → вкладка Число). Также проверьте, что результат формулы — это число, а не текст (например, если вы использовали оператор & для объединения строк).

Как рассчитать возраст на конкретную дату (не сегодня)?

Замените ТДАТА() на ячейку с нужной датой. Например, для расчёта возраста на 31.12.2023:

=РАЗНДАТ(A2; ДАТА(2023;12;31); "y")

Или укажите дату в отдельной ячейке (например, D1) и ссылайтесь на неё:

=РАЗНДАТ(A2; D1; "y")
Можно ли рассчитать возраст без функции РАЗНДАТ?

Да, но это менее точно. Альтернативный вариант:

=ЦЕЛОЕ((ТДАТА()-A2)/365,25)

Здесь 365,25 — среднее количество дней в году с учётом високосных лет. Однако этот метод даёт погрешность ±1 день для дат, близких к 29 февраля.

Как посчитать средний возраст по таблице?

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

=СРЗНАЧ(B2:B100)

Убедитесь, что в диапазоне нет текстовых значений (например, "Дата в будущем") — они приводят к ошибке #ДЕЛ/0!. Чтобы их игнорировать, используйте:

=СРЗНАЧЕСЛИ(B2:B100; ">0")
Почему функция РАЗНДАТ не работает в моём Excel?

Возможные причины:

  • 🌍 Функция введена на русском, а ваша версия Excel ожидает английский синтаксис. Попробуйте =DATEDIF(A2; TODAY(); "y").
  • 📅 Ячейка с датой рождения имеет неверный формат (например, текст вместо даты). Проверьте через Формат ячеек.
  • 🔢 В настройках Excel отключена поддержка этой функции (редко, но бывает в корпоративных версиях). Обновите программу.