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

Почему стандартные методы дают ошибки и как их избежать

Вы когда-нибудь пытались вычесть дату рождения из текущей даты в Excel и получали странный результат вроде 12.05.1980 вместо ожидаемых 44 лет? Это классическая ошибка новичков, которая возникает из-за того, что Excel воспринимает даты как числовые значения, а не как временные интервалы. Программа просто выполняет арифметическую операцию вычитания, возвращая разницу в днях, но не преобразует её в годы.

Ещё одна распространённая проблема — игнорирование високосных годов. Если просто разделить разницу в днях на 365, результат будет неточным для людей, родившихся 29 февраля. А в корпоративных отчётах или медицинских картах такая погрешность может привести к серьёзным последствиям. Например, при расчёте страховых тарифов или определения возрастной группы пациентов.

В этой статье мы разберём 5 надёжных способов расчёта возраста в Excel — от простейших формул до универсальных решений, которые учитывают все нюансы календаря. Вы узнаете, как автоматически обновлять возраст при открытии файла, как избежать ошибок с отрицательными значениями и как адаптировать формулы для разных версий программы (включая Excel 365, Excel 2019 и Excel Online).

📊 Как часто вам нужно рассчитывать возраст в Excel?
Ежедневно
Раз в неделю
Редко
Никогда не пользовался

Способ 1: Базовая формула с функцией ДАТАРАЗН

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

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

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

  • 📅 "Y" — полные годы (игнорирует месяцы и дни)
  • 📆 "M" — полные месяцы (игнорирует дни)
  • 🕒 "D" — дни (игнорирует годы и месяцы)
  • 📅📆 "YM" — месяцы без учёта лет и дней
  • 📅🕒 "YD" — дни без учёта лет
  • 📆🕒 "MD" — дни без учёта месяцев и лет

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

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

Где B2 — ячейка с датой рождения, а СЕГОДНЯ() возвращает текущую дату.

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

-->

Способ 2: Универсальная формула с учётом високосных годов

Если вам нужна максимальная точность (например, для медицинских или юридических документов), используйте комбинацию функций ДАТАРАЗН и ЕСЛИ. Эта формула учитывает високосные годы и корректно обрабатывает дату 29 февраля:

=ЕСЛИ(ДАТАРАЗН(B2;СЕГОДНЯ();"MD")<0;ДАТАРАЗН(B2;СЕГОДНЯ();"Y")-1;ДАТАРАЗН(B2;СЕГОДНЯ();"Y"))

Как это работает:

  1. Сначала вычисляется разница в днях без учёта полных месяцев ("MD").
  2. Если результат отрицательный (значит, день рождения ещё не наступил в этом году), возраст уменьшается на 1.
  3. В противном случае возвращается стандартное значение из ДАТАРАЗН.

Эта формула гарантированно даст правильный результат даже для людей, родившихся 29 февраля 2000 года (високосный год). Например, если сегодня 28 февраля 2026 года, человеку исполнится 24 года только завтра, и формула вернёт 23.

=ЕСЛИ(ОСТАТ(ГОД(B2);4)=0; "Високосный"; "Не високосный")

где B2 — ячейка с датой.-->

Способ 3: Расчёт возраста на определённую дату (не текущую)

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

=ДАТАРАЗН(B2; ДАТА(2023;6;15); "Y")

Эта формула вернёт возраст на 15 июня 2023 года. Если дата в будущем (например, ДАТА(2026;12;31)), Excel корректно рассчитает прогнозируемый возраст.

Для удобства можно вынести целевую дату в отдельную ячейку (например, C2) и ссылаться на неё:

=ДАТАРАЗН(B2; C2; "Y")
Сценарий Формула Пример результата
Возраст на сегодня =ДАТАРАЗН(B2;СЕГОДНЯ();"Y") 44
Возраст на 01.01.2026 =ДАТАРАЗН(B2;ДАТА(2026;1;1);"Y") 45
Возраст в полных месяцах =ДАТАРАЗН(B2;СЕГОДНЯ();"M") 532
Дни до следующего дня рождения =ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2))-СЕГОДНЯ() 123
Почему формула может вернуть отрицательное значение?

Это происходит, если целевая дата (вторая аргумент) раньше даты рождения. Например, =ДАТАРАЗН(ДАТА(2000;1;1); ДАТА(1999;12;31); "Y") вернёт -1, потому что 31.12.1999 наступило ДО 01.01.2000. Чтобы избежать ошибки, используйте функцию ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(ДАТАРАЗН(B2;C2;"Y"); "Некорректные даты")

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

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

  1. Перейдите в Файл → Параметры → Формулы.
  2. В разделе Параметры вычислений выберите Автоматически, кроме таблиц данных.
  3. Поставьте галочку Пересчитывать книгу при сохранении.

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

Sub UpdateAges()

Dim ws As Worksheet

Set ws = ActiveSheet

ws.Calculate

End Sub

Этот макрос привяжите к событию открытия книги через ThisWorkbook → Open.

Способ 5: Расчёт возраста с выводом в формате "X лет, Y месяцев, Z дней"

Для отчётов, где требуется детализированный возраст (например, "3 года, 5 месяцев, 14 дней"), используйте следующую конструкцию:

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

Эта формула:

  • 📌 Сначала вычисляет полные годы ("Y").
  • 📌 Затем — оставшиеся месяцы ("YM", где Y игнорирует годы).
  • 📌 Наконец — оставшиеся дни ("MD", где M игнорирует месяцы).

Результат будет текстовой строкой, которую можно использовать в отчётах или письмах. Для корректного склонения ("год", "года", "лет") добавьте функцию ВЫБОР:

=ДАТАРАЗН(B2;СЕГОДНЯ();"Y") & " " & ВЫБОР(МОД(ДАТАРАЗН(B2;СЕГОДНЯ();"Y");100);

"лет"; ВЫБОР(МОД(ДАТАРАЗН(B2;СЕГОДНЯ();"Y");10);1;"год";2;3;4;"года";0;"лет"))

Как работает склонение в формуле?

Функция МОД вычисляет остаток от деления на 100 (для чисел 11-19) и на 10 (для остальных). Затем ВЫБОР подставляет правильное окончание:

- 1 → "год"

- 2, 3, 4 → "года"

- 5-0 → "лет"

Исключение: числа 11-19 всегда получают окончание "лет".

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

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

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

Другие частые проблемы:

  • 🔢 Результат в формате даты: Установите для ячейки с формулой формат Общий или Числовой.
  • 📅 Некорректная дата рождения: Проверьте, что ячейка содержит именно дату (а не текст), с помощью функции =ДАТАЗНАЧ(B2). Если возвращает ошибку — исправьте формат.
  • ⚠️ Отрицательный возраст: Поменяйте местами даты в формуле или используйте =АБС(ДАТАРАЗН(...)).
  • 🔄 Формула не обновляется: Включите автоматический пересчёт в Параметры → Формулы.

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

  1. Выделите ячейку с формулой.
  2. Перейдите в Формулы → Вычисление формулы (Formulas → Evaluate Formula).
  3. Нажимайте Вычислить, чтобы увидеть промежуточные результаты.
⚠️ Внимание: Если вы работаете с датами до 1900 года (например, в генеалогических исследованиях), Excel может их некорректно обрабатывать. В этом случае используйте альтернативный метод с функцией =РАЗНДАТ (требует подключения надстройки Analysis ToolPak).

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

Можно ли рассчитать возраст без функции ДАТАРАЗН?

Да, с помощью комбинации функций ГОД, МЕСЯЦ и ДЕНЬ:

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

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

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

В веб-версии Excel функция ДАТАРАЗН также доступна, но может требовать ручного ввода (автозамена не работает). Используйте английский вариант =DATEDIF(B2,TODAY(),"Y"). Для русскоязычного интерфейса предварительно установите регион "Россия" в настройках профиля Microsoft.

Почему возраст в Excel и в паспорте отличается на 1 год?

Это связано с тем, что Excel считает полные годы только после дня рождения. Например, если человек родился 30 декабря 2000 года, то:

  • 29 декабря 2023 года Excel покажет 22 (день рождения ещё не наступил).
  • 30 декабря 2023 года — 23.

В паспорте возраст округляется до полных лет на момент выдачи документа.

Как рассчитать возраст для большого списка (10 000+ строк) без тормозов?

Для оптимизации:

  1. Отключите автоматический пересчёт (Формулы → Параметры вычислений → Вручную).
  2. Используйте СЕГОДНЯ() только в одной ячейке (например, A1), а в формулах ссылайтесь на неё:
  3. =ДАТАРАЗН(B2; $A$1; "Y")
  4. Для массового расчёта применяйте Power QueryExcel 2016+):
  5. // В Power Query M
    

    Age = Duration.Days(Duration.From(DateTime.LocalNow() - #"Дата рождения"[Column1])) / 365.25

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

Да, в Google Sheets используется тот же синтаксис, но функция называется =DATEDIF (даже в русскоязычной версии). Пример:

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

Также доступны альтернативные формулы:

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

Где 1 — это метод расчёта (актуарный).