Как посчитать возраст человека в Excel: формулы, примеры и нюансы

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

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

1. Базовый метод: функция DATEDIF для расчёта полных лет

Функция DATEDIF (от англ. DATE DIFFerence) — это скрытая "жемчужина" Excel, которую не найдёшь в стандартном списке функций. Она позволяет вычислять разницу между двумя датами в годах, месяцах или днях. Для расчёта возраста в полных годах формула выглядит так:

=DATEDIF(дата_рождения; TODAY(); "Y")

Где:

  • 📅 дата_рождения — ячейка с датой рождения (например, A2)
  • 🔄 TODAY() — текущая дата (обновляется автоматически)
  • 🔢 "Y" — параметр, указывающий, что нужно вернуть разницу в полных годах

Пример: если в ячейке A2 указана дата 15.05.1990, а сегодня 20.07.2026, формула вернёт 34 (полных года). Обратите внимание: даже если до дня рождения остался 1 день, функция вернёт возраст на последний пройденный день рождения.

2. Учёт месяца и дня рождения: точный возраст в годах, месяцах и днях

Часто требуется узнать не только количество полных лет, но и сколько месяцев/дней прошло с последнего дня рождения. Для этого комбинируем параметры функции DATEDIF:

=DATEDIF(A2; TODAY(); "Y") & " лет, " & DATEDIF(A2; TODAY(); "YM") & " мес., " & DATEDIF(A2; TODAY(); "MD") & " дн."

Расшифровка параметров:

  • 📆 "Y" — полные годы
  • 📅 "YM" — месяцы с последнего дня рождения (исключая годы)
  • 🕒 "MD" — дни с последнего месяца (исключая годы и месяцы)

Пример результата: "34 лет, 2 мес., 5 дн.". Этот формат удобен для отчётов, где важна точность. Однако будьте осторожны: если дата рождения в будущем (например, опечатка в году), формула вернёт ошибку #ЧИСЛО!.

Что делать если дата рождения в будущем?

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

=IFERROR(DATEDIF(A2; TODAY(); "Y"); "Ошибка: будущая дата")

3. Автоматическое обновление возраста при открытии файла

По умолчанию Excel не пересчитывает формулы с TODAY() вручную — они обновляются только при открытии файла или принудительном пересчёте (F9). Если вам нужно, чтобы возраст всегда был актуальным, настройте автоматический пересчёт:

  1. Перейдите в Файл → Параметры → Формулы.
  2. В разделе Параметры вычислений выберите Автоматически.
  3. Нажмите OK.

Теперь возраст будет обновляться при каждом изменении в книге. Важно: это может замедлить работу с большими файлами (более 10 000 строк), если в них много формул с TODAY().

📊 Как часто вам нужно обновлять возраст в Excel?
Каждый день
Раз в неделю
Раз в месяц
Только при открытии файла

4. Альтернативные методы: функции YEARFRAC и INT

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

=INT(YEARFRAC(A2; TODAY(); 1))

Параметр 1 в YEARFRAC указывает метод расчёта (фактическое количество дней в году). Этот способ даёт тот же результат, что и DATEDIF с параметром "Y", но некоторые пользователи считают его более наглядным.

Для вывода возраста в формате "XX лет XX мес." используйте:

=INT(YEARFRAC(A2; TODAY(); 1)) & " лет, " & ROUND(MOD(YEARFRAC(A2; TODAY(); 1); 1)*12; 0) & " мес."

Здесь MOD вычисляет остаток от деления (дробную часть года), а ROUND округляет месяцы до целого числа.

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

- Проверьте, что в настройках региональных параметров используется нужный формат даты (дд.мм.гггг или мм/дд/гггг)

- Используйте CTRL+; для быстрой вставки текущей даты в ячейку

-->

5. Расчёт возраста на определённую дату (не текущую)

Иногда нужно узнать, сколько человеку было лет на конкретную дату в прошлом или будущем. Например, для анализа "сколько было лет на момент поступления в вуз". Замените TODAY() на фиксированную дату:

=DATEDIF(A2; "31.12.2020"; "Y")

Или используйте ссылку на ячейку с датой:

=DATEDIF(A2; B2; "Y")

Где B2 — ячейка с датой, на которую нужно рассчитать возраст. Этот метод полезен для исторических исследований или ретроспективного анализа.

=DATEDIF(A2; DATE(YEAR(TODAY())+5; MONTH(TODAY()); DAY(TODAY())); "Y")

-->

6. Ошибки и их решения: почему формула не работает?

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

Ошибка Причина Решение
#ИМЯ? Опечатка в названии функции Проверьте регистр: DATEDIF, а не Datedif
#ЗНАЧ! Ячейка содержит текст вместо даты Преобразуйте текст в дату с помощью ДАТАЗНАЧ() или измените формат ячейки
#ЧИСЛО! Дата рождения позже текущей даты Используйте IFERROR или проверьте корректность даты
Некорректный возраст (например, 1 год вместо 30) Неправильный формат даты (например, мм.дд.гггг вместо дд.мм.гггг) Настройте формат ячейки через Формат ячеек → Дата

Если возраст рассчитывается неверно, проверьте региональные настройки Excel. В американском формате дата записывается как мм/дд/гггг, а в европейском — дд.мм.гггг. Например, 05.06.1990 и 06.05.1990 — это разные даты!

⚠️ Внимание: Если вы работаете с датами до 1900 года, Excel может их некорректно обрабатывать. В этом случае используйте текстовый формат или специализированные надстройки.

7. Продвинутые техники: Power Query и пользовательские функции

Для обработки больших массивов данных (например, списков сотрудников с датами рождения) удобно использовать Power Query:

  1. Выделите таблицу с датами рождения.
  2. Перейдите в Данные → Получение данных → Из таблицы/диапазона.
  3. В редакторе Power Query добавьте столбец с формулой:
    =Date.From(DateTime.LocalNow()) - [Дата рождения]
  4. Преобразуйте результат в годы, месяцы или дни.

Для автоматизации можно создать пользовательскую функцию на VBA:

Function ВОЗРАСТ(датарожд As Date) As String

Dim годы As Integer, мес As Integer, дни As Integer

годы = DateDiff("yyyy", датарожд, Date)

мес = DateDiff("m", датарожд, Date) - годы * 12

дни = DateDiff("d", датарожд, Date) - годы 365 - мес 30

ВОЗРАСТ = годы & " лет, " & мес & " мес., " & дни & " дн."

End Function

После добавления этого кода в редактор VBA (Alt+F11) функцию можно использовать в Excel как =ВОЗРАСТ(A2).

⚠️ Внимание: Пользовательские функции VBA не работают в Excel Online и мобильных версиях. Также они могут блокироваться настройками безопасности (включите макросы в Файл → Параметры → Центр управления безопасностью).

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

Можно ли рассчитать возраст без функции DATEDIF?

Да, используйте комбинацию функций YEAR, MONTH и DAY:

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

Эта формула учитывает, прошёл ли день рождения в текущем году.

Как посчитать возраст в днях?

Используйте простую разницу дат:

=TODAY()-A2

Результат будет в днях. Чтобы перевести в годы, разделите на 365 (или 365.25 для учёта високосных годов).

Почему возраст отображается в формате даты (например, 15.05.1990), а не числа?

Это происходит, если ячейка с результатом имеет формат Дата. Измените формат на Общий или Числовой:

  1. Выделите ячейку с формулой.
  2. Нажмите CTRL+1 (или правая кнопка → Формат ячеек).
  3. Выберите формат Числовой или Общий.
Как рассчитать возраст для нескольких человек одновременно?

Скопируйте формулу для одной ячейки, затем протяните маркер автозаполнения (маленький квадрат в правом нижнем углу ячейки) вниз по столбцу. Excel автоматически подстроит ссылки на ячейки (например, A2 станет A3, A4 и т.д.).

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

Нет, Excel не поддерживает обновление формул в реальном времени. Максимум — автоматический пересчёт при открытии файла или изменении данных. Для динамического отображения времени используйте Power Apps или Google Sheets с функцией NOW().