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

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

Дело в том, что Excel оперирует датами как числовыми значениями (где 1 — это 1 января 1900 года), а стандартное вычитание не учитывает логику "полных лет". Например, если сегодня 15.05.2026, а дата рождения — 20.12.2000, то простая формула =ТДАТА()-A1 вернёт 23,4 (года), хотя полных лет ещё только 23. В этой статье разберём 5 надёжных способов посчитать возраст корректно — от базовых функций до продвинутых формул с учётом високосных годов.

Особое внимание уделим типичным ошибкам: почему формула =ГОД(ТДАТА())-ГОД(A1) даёт сбой при датах рождения в декабре-январе, как избежать проблемы с #ЗНАЧ! при пустых ячейках, и почему в некоторых случаях лучше использовать Power Query вместо формул. Также покажем, как автоматизировать расчёт для тысяч строк данных — без ручного ввода текущей даты.

Если вы работаете с большими таблицами, где даты рождения хранятся в формате ДД.ММ.ГГГГ или ГГГГ-ММ-ДД, важно предварительно проверить их корректность. Например, дата 30.02.2020 не существует, но Excel может её "принять" и исказить итоговый расчёт. Мы научим вас проверять такие ошибки заранее.

1. Базовый способ: функция РАЗНДАТ (DATEDIF)

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

Синтаксис функции:

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

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

  • 📅 "Y" — полные годы (игнорирует месяцы и дни)
  • 📆 "M" — полные месяцы
  • "D" — полные дни

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

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

где A2 — ячейка с датой рождения, а ТДАТА() возвращает текущую дату.

⚠️ Внимание: Если дата рождения позже текущей даты (например, опечатка в году), функция вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(РАЗНДАТ(A2; ТДАТА(); "Y"); "Ошибка даты")

2. Альтернативный метод: комбинация ГОД и ЕСЛИ

Если РАЗНДАТ по какой-то причине недоступна (например, в некоторых локализациях Excel для Mac), используйте формулу на основе функций ГОД, МЕСЯЦ и ДЕНЬ. Она учитывает, прошёл ли день рождения в текущем году:

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

Разберём логику:

  1. Сначала вычисляем разницу лет: ГОД(ТДАТА()) - ГОД(A2).
  2. Затем проверяем, прошёл ли день рождения в текущем году:
    • Если текущий месяц меньше месяца рождения ИЛИ
    • Текущий месяц равен месяцу рождения, но день меньше дня рождения,
  • то вычитаем 1 (потому что полных лет ещё не исполнилось).
  • ⚠️ Внимание: Эта формула чувствительна к формату ячеек. Если дата рождения введена как текст (например, '15.05.2000), Excel вернёт ошибку. Чтобы исправить, выделите столбец с датами и выберите формат Дата в меню Главная → Формат ячеек.

    📊 Какой способ расчёта возраста вы используете чаще?
    Функция РАЗНДАТ
    Комбинация ГОД/МЕСЯЦ/ДЕНЬ
    Power Query
    Другой вариант
    Не знаю, как считать

    3. Учёт високосных годов и точный расчёт дней

    Если вам нужно не только количество полных лет, но и точный возраст в годах, месяцах и днях (например, 25 лет, 3 месяца, 10 дней), используйте расширенный вариант РАЗНДАТ:

    =РАЗНДАТ(A2; ТДАТА(); "Y") & " лет, " & РАЗНДАТ(A2; ТДАТА(); "YM") & " мес., " & РАЗНДАТ(A2; ТДАТА(); "MD") & " дн."

    Здесь:

    • 📌 "Y" — полные годы.
    • 📌 "YM" — месяцы с учётом полных лет (т.е. остаток после вычитания лет).
    • 📌 "MD" — дни с учётом полных лет и месяцев.

    Важно: Формат "YD" (дни без учёта месяцев) в РАЗНДАТ работает некорректно — используйте только "MD" для точного расчёта дней.

    Для проверки високосных годов (например, если дата рождения — 29 февраля) добавьте условие:

    =ЕСЛИ(И(ДЕНЬ(A2)=29; МЕСЯЦ(A2)=2); "Високосный год!"; РАЗНДАТ(A2; ТДАТА(); "Y"))
    Почему 29 февраля — проблема для Excel?

    Excel хранит даты как последовательные числа, где 1 января 1900 года = 1. При этом 1900 год ошибочно считается високосным (хотя на самом деле нет), что может искажать расчёты для дат до 1 марта 1900. Для современных дат это не критично, но важно помнить при работе с историческими данными.

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

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

    Алгоритм действий:

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

      где [Дата рождения] — название вашего столбца.

    4. Затем создайте ещё один столбец для расчёта полных лет:
      Number.IntegerDivide(Date.Year(DateTime.LocalNow()) - Date.Year([Дата рождения]), 1) - (DateTime.LocalNow() < DateTime.From([Дата рождения]).AddYears(Date.Year(DateTime.LocalNow()) - Date.Year([Дата рождения])) ? 1 : 0)
    5. Нажмите Главная → Закрыть и загрузить.

    ⚠️ Внимание: В Power Query даты указываются в формате ГГГГ-ММ-ДД. Если ваш источник использует другой формат (например, ДД.ММ.ГГГГ), предварительно преобразуйте его с помощью функции Date.FromText.

    Убедиться, что даты в формате ДД.ММ.ГГГГ или ГГГГ-ММ-ДД|

    Проверить отсутствие текста в ячейках (например, "ок. 1990")|

    Удалить пустые строки|

    Сохранить исходную таблицу (на случай ошибок)-->

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

    Часто требуется узнать возраст не на сегодня, а на определённую дату — например, на момент трудоустройства или медицинского осмотра. Для этого замените ТДАТА() на фиксированную дату в формате ДАТА(год; месяц; день).

    Пример: возраст на 01.01.2023:

    =РАЗНДАТ(A2; ДАТА(2023; 1; 1); "Y")

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

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

    Для массового расчёта (например, возраст всех сотрудников на дату приёма на работу) создайте дополнительный столбец с датами и протяните формулу вниз.

    Дата рождения Дата события Формула Возраст (полных лет)
    15.05.1990 01.06.2020 =РАЗНДАТ(A2; B2; "Y") 29
    20.12.1985 10.01.2021 =РАЗНДАТ(A3; B3; "Y") 35
    01.01.2000 01.01.2020 =РАЗНДАТ(A4; B4; "Y") 20

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

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

    • 🔴 Ошибка #ЗНАЧ!: Возникает, если ячейка с датой рождения пустая или содержит текст. Решение: используйте ЕСЛИОШИБКА или проверку ЕПУСТО:
      =ЕСЛИ(ЕПУСТО(A2); ""; РАЗНДАТ(A2; ТДАТА(); "Y"))
    • 🔴 Неправильный формат даты: Excel может воспринимать 12.03.2000 как 3 декабря (если в настройках системы формат ММ.ДД.ГГГГ). Решение: проверьте региональные настройки в Файл → Параметры → Язык.
    • 🔴 Округление до ближайшего года: Формула =ЦЕЛОЕ((ТДАТА()-A2)/365) даёт приблизительный результат, так как не учитывает високосные годы. Используйте только РАЗНДАТ или комбинацию ГОД/МЕСЯЦ/ДЕНЬ.

    ⚠️ Внимание: Если вы импортируете даты из внешних источников (например, или SQL), они могут отображаться как числа (например, 44197 вместо 01.01.2021). Чтобы преобразовать, используйте формулу:

    =ДАТА(1900; 1; A2)

    где A2 — ячейка с числовым значением даты.

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

    Иногда требуется не только целое число лет, но и десятичная часть (например, 25,5 лет для отчётности). Для этого используйте:

    =РАЗНДАТ(A2; ТДАТА(); "Y") + (РАЗНДАТ(A2; ТДАТА(); "YM") + РАЗНДАТ(A2; ТДАТА(); "MD")/30)/12

    Эта формула учитывает, что в среднем в месяце 30 дней (упрощённо).

    Для визуального выделения несовершеннолетних (возраст < 18) или пенсионеров (возраст ≥ 65) настройте условное форматирование:

    1. Выделите столбец с возрастом.
    2. Перейдите в Главная → Условное форматирование → Создать правило.
    3. Выберите Форматировать только ячейки, которые содержат.
    4. Установите условие: Значение меньше 18 и выберите красный цвет заливки.
    5. Добавьте второе правило для значения больше или равно 65 с синим цветом.

    Пример настройки:

    Возраст Форматирование Причина
    17 Красный фон Несовершеннолетний
    25 Без форматирования Трудоспособный возраст
    66 Синий фон Пенсионный возраст

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

    ❓ Почему формула =ГОД(ТДАТА())-ГОД(A1) даёт неверный результат для декабря?

    Эта формула не учитывает, прошёл ли день рождения в текущем году. Например, если сегодня 01.01.2026, а дата рождения — 31.12.2000, то по формуле получится 24 года, хотя на самом деле ещё только 23. Используйте РАЗНДАТ или расширенную формулу с ЕСЛИ.

    ❓ Как посчитать возраст в Excel Online или Google Sheets?

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

    =INT(YEAR(TODAY())-YEAR(A1)-IF(OR(MONTH(TODAY())

    ❓ Можно ли рассчитать возраст с учётом времени (часов и минут)?

    Да, но для этого нужно использовать функции СЕГОДНЯ() и ВРЕМЯ(). Например, для расчёта возраста в часах:

    =(СЕГОДНЯ()+ВРЕМЯ(ЧАС(СЕЙЧАС()); МИНУТЫ(СЕЙЧАС()); СЕКУНДЫ(СЕЙЧАС())) - A1)*24

    Однако для большинства задач достаточно расчёта в годах.

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

    Функции ТДАТА() и СЕЙЧАС() пересчитываются автоматически при каждом открытии файла или изменении данных. Если этого не происходит, проверьте настройки:

    1. Перейдите в Формулы → Параметры вычислений.
    2. Выберите Автоматически (не Вручную).

    ❓ Почему Excel показывает дату как ######?

    Это означает, что ширина столбца недостаточна для отображения даты. Растяните столбец или измените формат ячейки на Дата через Главная → Формат → Формат ячеек. Также проверьте, не является ли значение отрицательным (например, если дата рождения в будущем).