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

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

Мы рассмотрим не только стандартные способы вычисления возраста, но и альтернативные методы для особых случаев: когда нужно посчитать возраст на конкретную дату (не сегодня), когда требуется учесть только месяцы или дни, или когда данные поступают в нестандартном формате. Особое внимание уделим типичным ошибкам, из-за которых формулы возвращают #ЗНАЧ! или неверные значения — их устранение сэкономит вам часы debugging.

В конце статьи вы найдете готовые шаблоны для скачивания и FAQ с ответами на самые частые вопросы. А если вы работаете с большими массивами данных (например, базы сотрудников или пациентов), мы покажем, как автоматизировать процесс с помощью Power Query или VBA.

1. Базовый способ: вычитание дат и функция РАЗНДАТ

Самый очевидный метод — вычесть дату рождения из текущей даты. Однако он работает не так, как ожидают новички. Если в ячейке A1 у вас дата рождения (например, 15.05.1990), а в B1 вы введете формулу =СЕГОДНЯ()-A1, то получите не возраст в годах, а количество дней между датами. Чтобы преобразовать это в годы, нужно разделить результат на 365:

=ЦЕЛОЕ((СЕГОДНЯ()-A1)/365)

Но этот подход не учитывает високосные годы (в них 366 дней), поэтому для точных расчетов лучше использовать функцию РАЗНДАТ (или DATEDIF в английской версии). Ее синтаксис:

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

Для возраста в полных годах формула будет такой:

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

Где "y" — это код для лет (years). Другие варианты:

  • 📅 "m" — полные месяцы между датами
  • 🗓️ "d" — полные дни между датами
  • 📊 "ym" — месяцы с учетом лет (например, если разница 1 год и 2 месяца, вернет 2)
  • 📈 "md" — дни с учетом лет и месяцев (например, если разница 1 год, 2 месяца и 5 дней, вернет 5)
📊 Какой способ расчета возраста вы используете чаще?
Функция РАЗНДАТ
Вычитание дат с делением на 365
Ручной ввод
Другой способ

2. Проблемы с функцией РАЗНДАТ и как их избежать

Функция РАЗНДАТ существует в Excel с версии 2000 года, но до сих пор вызывает вопросы. Главная сложность — ее отсутствие в справочнике функций. Вы не найдете РАЗНДАТ в меню Формулы → Дата и время, но она работает! Это наследие программы Lotus 1-2-3, и Microsoft сохранила ее для совместимости.

Вторая проблема — некорректная работа с отрицательными датами. Если дата конца раньше даты начала (например, вы ошиблись и указали дату рождения как 15.05.2050), формула вернет ошибку #ЧИСЛО!. Чтобы этого избежать, добавьте проверку:

=ЕСЛИ(A1>СЕГОДНЯ(); "Ошибка даты"; РАЗНДАТ(A1; СЕГОДНЯ(); "y"))

Третья ловушка — формат ячеек. Если дата рождения введена как текст (например, "15.05.1990" в кавычках), Excel не распознает ее как дату. Чтобы исправить:

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  3. Выберите формат Дата.

3. Расчет возраста на конкретную дату (не сегодня)

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

Пример: нужно посчитать возраст сотрудника на 01.01.2023, если его дата рождения в A1:

=РАЗНДАТ(A1; ДАТА(2023;1;1); "y")

Если дата хранится в другой ячейке (например, B1), формула упрощается:

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

Для удобства можно создать таблицу с колонками:

ИмяДата рожденияДата событияВозраст (лет)
Иванов И.И.15.05.199001.01.2023=РАЗНДАТ(B2;C2;"y")
Петрова А.С.22.11.198515.06.2022=РАЗНДАТ(B3;C3;"y")
Сидоров К.П.30.12.200030.12.2021=РАЗНДАТ(B4;C4;"y")
Почему возраст может отличаться на 1 год?

Если дата события — день рождения человека, то функция РАЗНДАТ посчитает его возраст как N лет (где N — полных лет накануне). Например, для даты рождения 15.05.1990 и даты события 15.05.2023 возраст будет 33 года, а не 32. Это корректно, так как 15.05.2023 — это день, когда человеку исполняется 33.

4. Учет месяцев и дней: точный возраст с детализацией

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

Формула для возраста в формате "X лет Y месяцев Z дней":

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

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

=РАЗНДАТ(A1;СЕГОДНЯ();"m")
⚠️ Внимание: При расчете месяцев функция РАЗНДАТ учитывает полные месяцы. Например, если между датами 1 год и 1 день, то РАЗНДАТ(..."m") вернет 12 (месяцев), а не 13. Для точного подсчета дней используйте "md".

Для визуального разделения лет, месяцев и дней можно создать отдельные колонки:

  • 📌 Лет: =РАЗНДАТ(A1;СЕГОДНЯ();"y")
  • 📌 Месяцев: =РАЗНДАТ(A1;СЕГОДНЯ();"ym")
  • 📌 Дней: =РАЗНДАТ(A1;СЕГОДНЯ();"md")

5. Альтернативные методы: без функции РАЗНДАТ

Если по какой-то причине РАЗНДАТ недоступна (например, в некоторых локализациях Excel или в Google Sheets с определенными настройками), можно обойтись стандартными функциями. Вот два рабочих способа:

Способ 1. Использование ГОД, МЕСЯЦ, ДЕНЬ

=ГОД(СЕГОДНЯ())-ГОД(A1)-ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A1); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A1); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A1))); 1; 0)

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

Способ 2. Через целую часть и модуль

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

Здесь 365,25 — среднее количество дней в году с учетом високосных лет. Точность ниже, чем у РАЗНДАТ, но для большинства задач достаточно.

Введите дату рождения в формате ДД.ММ.ГГГГ|Убедитесь, что ячейка имеет формат "Дата"|Проверьте результат на тестовых данных (например, 01.01.2000 → должен быть ~24 года в 2026)|Сравните с ручным расчетом для 2-3 примеров-->

6. Автоматизация для больших таблиц: Power Query и VBA

Если вам нужно рассчитать возраст для сотен или тысяч строк (например, в базе данных сотрудников), ручной ввод формул неэффективен. В этом случае поможет Power Query (доступен в Excel 2016+) или макросы VBA.

Метод 1. Power Query

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

    Затем преобразуйте результат в годы, разделив на 365.

  3. Закройте и загрузите данные обратно в Excel.

Метод 2. VBA-макрос

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

Sub CalculateAge()

Dim ws As Worksheet

Dim lastRow As Long

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

ws.Range("D2:D" & lastRow).Formula = "=DATEDIF(A2,TODAY(),""y"")"

End Sub

Этот код предполагает, что даты рождения находятся в колонке A, а возраст будет записан в колонку D.

⚠️ Внимание: При использовании Power Query учитывайте, что даты хранятся в формате UTC. Если ваш региональный часовой пояс отличается, может потребоваться корректировка с учетом смещения.

7. Типичные ошибки и как их исправить

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

ОшибкаПричинаРешение
#ИМЯ?Опечатка в названии функции (например, РАЗНДАТА вместо РАЗНДАТ)Проверьте синтаксис. В английской версии используется DATEDIF.
#ЗНАЧ!Ячейка содержит текст вместо датыПреобразуйте текст в дату с помощью ДАТАЗНАЧ или измените формат ячейки.
Неверный возраст (на 1 год меньше/больше)Не учтен текущий день рожденияИспользуйте РАЗНДАТ с кодом "y" — она корректно учитывает даты.
Возраст в формате даты (например, 01.01.1900)Ячейка с результатом имеет формат "Дата"Измените формат на Общий или Числовой.
Отрицательный возрастДата рождения позже текущей датыДобавьте проверку ЕСЛИ (см. раздел 2).

Критическая ошибка: если вы используете даты до 01.01.1900 (например, для исторических исследований), Excel их не распознает. В этом случае потребуется специализированное ПО или ручная корректировка с учетом юлианского календаря.

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

Можно ли в Excel посчитать возраст с точностью до часов?

Да, но для этого нужно использовать функцию РАЗНДАТ с кодом "h" (часы) или "md" (дни) и затем преобразовать дни в часы. Например:

=РАЗНДАТ(A1;СЕГОДНЯ();"d")*24

Однако учитывайте, что Excel не хранит время рождения, поэтому точность будет ограничена.

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

В Google Sheets функция DATEDIF (аналог РАЗНДАТ) доступна, но может не отображаться в подсказках. Введите ее вручную. Синтаксис идентичен:

=DATEDIF(A1; TODAY(); "y")
Как посчитать возраст, если дата рождения в формате "15 мая 1990"?

Используйте функцию ДАТАЗНАЧ, чтобы преобразовать текст в дату:

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

Если формат нестандартный (например, "15/05/1990"), замените разделители через ПОДСТАВИТЬ:

=ДАТАЗНАЧ(ПОДСТАВИТЬ(A1;"/";"."))
Можно ли автоматически обновлять возраст при открытии файла?

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

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

Сначала рассчитайте возраст каждого человека (например, в колонке D), затем используйте функцию СРЗНАЧ:

=СРЗНАЧ(D2:D100)

Для медианы (середины распределения) используйте МЕДИАНА(D2:D100).