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

Почему стандартное вычитание дат не работает

На первый взгляд, расчёт возраста в Microsoft Excel кажется тривиальной задачей: достаточно вычесть дату рождения из текущей даты. Однако такой подход даёт некорректный результат — вместо полных лет программа вернёт общее количество дней между датами. Например, если сегодня 15 мая 2026 года, а дата рождения — 10 мая 1990 года, простое вычитание покажет 12 780 дней, а не 33 года.

Проблема кроется в формате хранения дат: Excel оперирует ими как числовыми значениями, где 1 соответствует 1 января 1900 года. Чтобы получить возраст в годах, месяцах или днях, требуются специальные функции обработки датДАТА(), ГОД(), ДОЛЯГОДА() и другие. Более того, нужно учитывать високосные годы, разную продолжительность месяцев и даже временные зоны (если даты рождения привязаны к разным регионам).

В этой статье мы разберём 5 надёжных способов расчёта возраста — от базовых формул до динамических решений с автоматическим обновлением при изменении текущей даты. Все примеры протестированы в Excel 2010–2023 и Office 365, включая веб-версию.

📊 Какой версии Excel вы пользуетесь?
Excel 2010-2016
Excel 2019-2023
Office 365 (подписка)
Excel Online
Другая

Способ 1: Простая формула с функцией ГОД

Самый распространённый метод — использование комбинации функций ГОД() и СЕГОДНЯ(). Формула выглядит так:

=ГОД(СЕГОДНЯ()) - ГОД(A2)

где A2 — ячейка с датой рождения. Эта формула вернёт разницу в полных годах, но с одной оговоркой: если день рождения ещё не наступил в текущем году, результат будет завышен на 1. Например, если сегодня 15 мая, а дата рождения — 20 декабря, Excel покажет возраст на год больше реального.

Чтобы исправить это, добавьте проверку с функцией ЕСЛИ():

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

Убедитесь, что дата рождения введена в формате ДД.ММ.ГГГГ|Проверьте региональные настройки (в русских версиях Excel разделитель — точка)|Используйте СЕГОДНЯ() только для динамического расчёта (при печати она не обновится)-->

Способ 2: Функция ДОЛЯГОДА для точного возраста

Если вам нужен возраст не только в полных годах, но и с учётом месяцев/дней, используйте функцию ДОЛЯГОДА(). Она возвращает долю года между двумя датами в виде десятичного числа (например, 33,25 для 33 лет и 3 месяцев). Базовая формула:

=ДОЛЯГОДА(A2; СЕГОДНЯ(); 1)

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

=ЦЕЛОЕ(ДОЛЯГОДА(A2; СЕГОДНЯ(); 1)) & " лет, " & ОСТАТ(ЦЕЛОЕ(ДОЛЯГОДА(A2; СЕГОДНЯ(); 1)*12); 12) & " мес."
⚠️ Внимание: Функция ДОЛЯГОДА() может давать погрешность в 1 день из-за особенностей обработки високосных годов. Для критических расчётов (например, в страховых компаниях) используйте альтернативный метод с функцией ДАТАРАЗН().
Формула Результат для даты
15.05.1990 (на 15.05.2026)
Особенности
=ГОД(СЕГОДНЯ())-ГОД(A2) 34 Завышает на 1 год, если ДР не наступил
=ДОЛЯГОДА(A2;СЕГОДНЯ();1) 34,0 Точный расчёт с дробной частью
=РАЗНДАТ(A2;СЕГОДНЯ();"y") 34 Работает только в английских версиях Excel

Способ 3: Функция РАЗНДАТ (DATEDIF) — скрытая возможность Excel

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

  • 📅 "y" — полные годы (=РАЗНДАТ(A2;СЕГОДНЯ();"y"))
  • 📆 "m" — полные месяцы (=РАЗНДАТ(A2;СЕГОДНЯ();"m"))
  • "d" — полные дни (=РАЗНДАТ(A2;СЕГОДНЯ();"d"))
  • 🔄 "ym" — месяцы с учётом годов (=РАЗНДАТ(A2;СЕГОДНЯ();"ym"))
  • 📏 "yd" — дни с учётом годов (=РАЗНДАТ(A2;СЕГОДНЯ();"yd"))
  • 📊 "md" — разница в днях без учёта месяцев и лет

Пример комплексного расчёта возраста в формате "X лет, Y месяцев, Z дней":

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
Почему РАЗНДАТ не видна в списке функций?

Функция РАЗНДАТ() была добавлена в Excel для совместимости с Lotus 1-2-3 и официально не документирована. Она работает во всех версиях, но не отображается в мастер-функций. Введите её вручную или используйте автозаполнение после первых символов.

⚠️ Внимание: В русских версиях Excel до 2016 года функция может требовать английского названия DATEDIF. Если формула возвращает ошибку #ИМЯ?, замените РАЗНДАТ на DATEDIF.

Способ 4: Динамический расчёт с учётом временных зон

Если даты рождения привязаны к разным часовым поясам (например, в международных базах данных), стандартные формулы могут давать погрешность ±1 день. Для точного расчёта используйте комбинацию функций ДАТАЗНАЧ() и ВРЕМЯЗНАЧ():

=РАЗНДАТ(ДАТАЗНАЧ(A2)&ВРЕМЯЗНАЧ(B2); СЕГОДНЯ(); "y")

где A2 — дата рождения, а B2 — время (например, "12:00"). Этот метод актуален для:

  • 🌍 Медицинских систем с данными пациентов из разных стран
  • ✈️ Авиационных компаний (расчёт возраста экипажа)
  • 🏦 Банковских приложений (верификация клиентов)

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

Function ВОЗРАСТ_ПОЛНЫЙ(датарожд As Date) As String

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

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

месяцы = DateDiff("m", DateSerial(Year(датарожд), Month(датарожд), Day(датарожд)), Date) Mod 12

дни = DateDiff("d", DateSerial(Year(Date), Month(датарожд), Day(датарожд)), Date)

ВОЗРАСТ_ПОЛНЫЙ = годы & " лет, " & месяцы & " мес., " & дни & " дн."

End Function

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

Ctrl+; — вставляет сегодняшнюю дату, Ctrl+Shift+; — текущее время.-->

Способ 5: Расчёт возраста на конкретную дату (не сегодня)

Если нужно узнать возраст человека на определённую дату в прошлом или будущем (например, на момент трудоустройства), замените СЕГОДНЯ() на фиксированную дату. Формула примет вид:

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

где ДАТА(2026;12;31) — целевая дата (31 декабря 2026 года). Этот метод полезен для:

  • 📅 Планирования выходов на пенсию
  • 🎓 Расчёта возраста учеников на 1 сентября
  • 🏆 Определения спортивных категорий по возрасту

Чтобы автоматизировать процесс, создайте таблицу с колонками:

Дата рождения Целевая дата Формула Результат
15.05.1990 01.09.2026 =РАЗНДАТ(A2;B2;"y") 34
10.12.2000 31.12.2030 =РАЗНДАТ(A3;B3;"y") 30

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

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

  1. Ошибка #ИМЯ? — возникает при опечатках в названиях функций. Проверьте регистр и языковые настройки. В русских версиях Excel используйте РАЗНДАТ, в английских — DATEDIF.
  2. Неправильный формат ячейки — если дата отображается как число (например, 45341), измените формат на Дата через Главная → Формат → Формат ячеек.
  3. Погрешность в 1 день — появляется из-за различия в обработке времени. Используйте ЦЕЛОЕ() для округления: =ЦЕЛОЕ(ДОЛЯГОДА(A2;СЕГОДНЯ();1)).
  4. Зависание файла — при работе с большими массивами дат (10 000+ строк) отключите автоматический пересчёт: Формулы → Параметры вычислений → Вручную.

Особое внимание уделите региональным настройкам. В американских версиях Excel даты по умолчанию вводятся как ММ/ДД/ГГГГ, а в российских — ДД.ММ.ГГГГ. Если формула возвращает неверный результат, проверьте формат ячейки:

ПКМ по ячейке → Формат ячеек → Число → Дата → Выберите "14.03.2012"

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

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

Технически да, но это потребует ручного ввода промежуточных данных. Например:

  1. Создайте колонку с текущим годом (=ГОД(СЕГОДНЯ())).
  2. Вычтите год рождения из текущего года.
  3. Добавьте колонку с проверкой "прошёл ли день рождения в этом году" (используйте ЕСЛИ).

Однако такой подход занимает больше времени и подвержен ошибкам при копировании формул.

Почему функция ДОЛЯГОДА даёт результат 33,99 вместо 34?

Это связано с методом расчёта (аргумент базис). По умолчанию (базис=0) используется американская система (30/360), где каждый месяц считается как 30 дней, а год — как 360. Для точного расчёта используйте базис=1 (фактическое количество дней):

=ДОЛЯГОДА(A2; СЕГОДНЯ(); 1)
Как рассчитать возраст в годах, месяцах и днях отдельно?

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

  • Годы: =РАЗНДАТ(A2;СЕГОДНЯ();"y")
  • Месяцы: =РАЗНДАТ(A2;СЕГОДНЯ();"ym")
  • Дни: =РАЗНДАТ(A2;СЕГОДНЯ();"md")

Для вывода в одной ячейке объедините их через &:

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " г. " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " м. " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " д."
Работает ли РАЗНДАТ в Google Sheets?

Да, но с синтаксическими различиями. В Google Таблицах используйте английскую версию функции:

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

Также доступны дополнительные аргументы, например "y*m" для вывода в формате "34y 2m".

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

Функция СЕГОДНЯ() пересчитывается при каждом открытии книги или изменении ячейки. Если обновление не происходит:

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

В макросах используйте Application.CalculateFull для принудительного обновления всех формул.