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

Почему стандартные методы дают ошибки при расчёте возраста

Вы когда-нибудь пробовали вычесть дату рождения из текущей даты в Excel, чтобы получить возраст — и получали странные числа вроде 45678 вместо ожидаемых 32 года? Это классическая ошибка новичков. Дело в том, что Excel хранит даты как последовательные числа, где 1 соответствует 1 января 1900 года. Простое вычитание дат даёт количество дней между ними, а не возраст в привычном формате.

Ещё одна распространённая проблема — неучёт текущего месяца и дня. Например, если сегодня 15 марта 2026 года, а дата рождения 20 марта 1990 года, то человек ещё не отметил день рождения в этом году. Многие формулы ошибочно прибавят лишний год, показывая 34 вместо правильных 33. В этой статье разберём 5 надёжных способов расчёта возраста, которые учитывают все нюансы календаря — от простых функций до универсальных формул для любых версий Excel (включая Excel 365 и Excel 2019).

Особое внимание уделим:

  • 📅 Точному расчёту с учётом месяца и дня рождения
  • 🔄 Автоматическому обновлению возраста при изменении текущей даты
  • 📊 Выводу результата в годах, месяцах и днях
  • Оптимизации для больших таблиц (10 000+ строк)

📊 Какой способ расчёта возраста вы используете чаще?
Ручной ввод
Функция РАЗНДАТ
Формула с ДАТАРАЗН
Другие функции
Не знаю, как считать

Способ 1: Функция РАЗНДАТ — самый надёжный метод

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

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

=РАЗНДАТ(дата_рождения; сегодня; "Y")

где:

  • дата_рождения — ячейка с датой (например, A2)
  • сегодня — текущая дата (можно использовать СЕГОДНЯ())
  • "Y" — формат вывода ("Y" — годы, "M" — месяцы, "D" — дни)

Пример для ячейки B2:

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

Эта формула вернёт количество полных лет на сегодняшний день. Чтобы получить возраст в формате X лет, Y месяцев, Z дней, комбинируйте функцию с разными параметрами:

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

Убедитесь, что дата рождения введена как дата (не текст)|Проверьте формат ячейки с результатом (общий или числовой)|Используйте СЕГОДНЯ() для автоматического обновления|Тестируйте формулу на крайних случаях (например, 29 февраля)

-->

⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Microsoft, но работает во всех версиях Excel. В Excel 365 её планируют заменить на ДАТАРАЗН, но пока обе функции доступны.

Способ 2: Функция ДАТАРАЗН — современная альтернатива

В Excel 365 и Excel 2021 появилась новая функция ДАТАРАЗН (DATEDIFF), которая пришла на смену устаревшей РАЗНДАТ. Её преимущества:

  • 🔹 Полная документация и поддержка Microsoft
  • 🔹 Работа с отрицательными датами (например, для расчёта времени до события)
  • 🔹 Более гибкие параметры единиц измерения ("year", "month", "day")

Синтаксис:

=ДАТАРАЗН(дата_рождения; сегодня; "year")

Пример для вывода полных лет:

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

Чтобы получить возраст в годах с учётом месяцев и дней (например, 32 года, 5 месяцев, 10 дней), используйте вложенные функции:

=ДАТАРАЗН(A2; СЕГОДНЯ(); "year") & " г., " &

ДАТАРАЗН(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(A2); ДЕНЬ(A2)); СЕГОДНЯ(); "month") & " мес., " &

РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(A2); ДЕНЬ(A2)); СЕГОДНЯ(); "md") & " дн."

Функция Синтаксис Пример вывода Поддержка версий
РАЗНДАТ =РАЗНДАТ(A2; СЕГОДНЯ(); "Y") 32 Все версии
ДАТАРАЗН =ДАТАРАЗН(A2; СЕГОДНЯ(); "year") 32 Excel 365, 2021
Комбинированная =ДАТАРАЗН(...) & " г., " & РАЗНДАТ(...) 32 г., 5 мес., 10 дн. Все версии

Способ 3: Формула с функцией ГОД — для любителей прозрачных вычислений

Если вам важно понимать логику расчёта, а не просто использовать "чёрный ящик" вроде РАЗНДАТ, этот метод для вас. Формула основана на сравнении годов с поправкой на месяц и день:

Базовая формула:

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

Разберём её по частям:

  1. ГОД(СЕГОДНЯ()) - ГОД(A2) — разница в годах без учёта месяца и дня.
  2. ЕСЛИ(...) — проверяет, прошёл ли день рождения в этом году:
    • Если текущий месяц < месяца рождения или
    • Текущий месяц = месяцу рождения, но текущий день < дня рождения,

то вычитаем 1 (человек ещё не отметил день рождения).

Пример для ячейки B2:

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

⚠️ Внимание: Эта формула может давать неверный результат для людей, родившихся 29 февраля в невисокосный год. Для таких случаев используйте РАЗНДАТ или доработайте формулу с функцией ДАТА.
Как исправить ошибку для 29 февраля

Для дат рождения 29 февраля замените ДЕНЬ(A2) на:

=ЕСЛИ(ДЕНЬ(A2)=29; ЕСЛИ(ДЕНЬ(ДАТА(ГОД(СЕГОДНЯ());3;0))=29; 29; 28); ДЕНЬ(A2))

Эта поправка проверяет, является ли текущий год високосным, и корректирует день для февраля.

Способ 4: Расчёт возраста в годах, месяцах и днях

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

Формула для ячейки B2:

=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " г. " &

РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " м. " &

РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."

где:

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

Для более аккуратного вывода (без лишних нулей) используйте:

=ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")>0;РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " г. ";"") &

ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")>0;РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " м. ";"") &

РАЗНДАТ(A2;СЕГОДНЯ();"MD") & " дн."

Пример вывода:

  • Для даты рождения 15.03.1990 и текущей даты 10.08.2026 результат будет: 34 г. 4 м. 26 дн.
  • Для даты 20.08.2026 (ещё не наступившей) результат: 0 г. 0 м. 0 дн. (или отрицательное значение, если не использовать ЕСЛИ).

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

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

  1. Используйте функцию СЕГОДНЯ() вместо фиксированной даты:
    =РАЗНДАТ(A2; СЕГОДНЯ(); "Y")

    Эта функция пересчитывается при каждом открытии файла или изменении данных.

  2. Для принудительного обновления нажмите F9 (пересчёт всех формул).
  3. Если возраст не обновляется, проверьте настройки:
    • Перейдите в Файл → Параметры → Формулы.
    • Убедитесь, что выбрано Автоматически в разделе Параметры вычислений.

Для больших таблиц (10 000+ строк) автоматический пересчёт может замедлять работу. В этом случае:

  • 🔹 Используйте РАЗНДАТ вместо ДАТАРАЗН (она быстрее).
  • 🔹 Отключите автоматический пересчёт (Формулы → Параметры вычислений → Вручную) и обновляйте данные по кнопке F9.
  • 🔹 Для статических отчётов фиксируйте текущую дату как значение (нажмите Ctrl+C, затем Правка → Специальная вставка → Значения).

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

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

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

Ещё одна распространённая проблема — формат ячеек. Если дата рождения введена как текст (например, 15.03.1990 без преобразования в дату), формулы не будут работать. Чтобы исправить:

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите формат Дата.
  4. Если дата не распознаётся, используйте функцию ДАТАЗНАЧ:
    =ДАТАЗНАЧ(A2)

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

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

Замените СЕГОДНЯ() на фиксированную дату в формате ДАТА(год; месяц; день). Например, для расчёта возраста на 31.12.2023:

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

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

=РАЗНДАТ(A2; B1; "Y")
Почему функция РАЗНДАТ не работает в моём Excel?

Вероятные причины:

  1. Опечатка в названии: В английской версии Excel функция называется DATEDIF (без перевода).
  2. Устаревшая версия: В Excel 2003 и раньше РАЗНДАТ могла отсутствовать. Обновите программу.
  3. Отключённые надстройки: Проверьте в Файл → Параметры → Надстройки, что включены Аналитические функции.

Альтернатива: используйте формулу с ГОД/МЕСЯЦ/ДЕНЬ (см. Способ 3).

Как посчитать возраст в годах с десятыми (например, 32.5 года)?

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

=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") + РАЗНДАТ(A2; СЕГОДНЯ(); "YM")/12

Эта формула:

  • Сначала считает полные годы (РАЗНДАТ(...; "Y")).
  • Затем добавляет долю года из неполных месяцев (РАЗНДАТ(...; "YM")/12).

Пример: если с даты рождения прошло 32 года и 6 месяцев, результат будет 32.5.

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

Да, в Google Sheets используйте те же функции, но с английским синтаксисом:

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

Отличия от Excel:

  • 🔹 СЕГОДНЯ()TODAY()
  • 🔹 РАЗНДАТDATEDIF (без перевода)
  • 🔹 Функция ДАТАРАЗН в Google Sheets не поддерживается.
Как посчитать средний возраст группы людей?

Используйте комбинацию СРЗНАЧ и РАЗНДАТ:

  1. В столбце B рассчитайте возраст каждого человека (например, =РАЗНДАТ(A2; СЕГОДНЯ(); "Y")).
  2. В отдельной ячейке используйте:
    =СРЗНАЧ(B2:B100)

    где B2:B100 — диапазон с возрастами.

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