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

Почему Excel ошибается с возрастом и как это исправить

Вы когда-нибудь сталкивались с ситуацией, когда Excel показывает возраст человека на год меньше, чем нужно? Или формула вдруг начинает выдавать ошибку #ЗНАЧ! после 30 февраля? Проблема в том, что программы работают с датами как с числами — для Excel "01.01.2000" это просто число 36526, а не реальная календарная дата. И если не учитывать нюансы, результат будет неточным.

В этой статье мы разберём 5 способов конвертации даты рождения в возраст — от простейших формул до автоматизированных решений с учётом текущей даты. Вы узнаете, как избежать ошибок с високосными годами, почему функция РАЗНДАТ иногда врет, и как сделать расчёт динамическим (чтобы возраст обновлялся автоматически при открытии файла). Все методы протестированы в Excel 2010–2023 и Office 365.

Для начала проверьте, правильно ли Excel распознаёт ваши даты. Если в ячейке вместо "15.05.1990" вы видите "15-май" или "44678", значит, формат данных нарушен. Исправьте это через Главная → Формат → Формат ячеек → Дата, иначе никакие формулы не сработают.

📊 Какой у вас опыт работы с датами в Excel?
Новичок, только начинаю
Использую базовые функции
Пишу сложные формулы
Автоматизирую отчёты с Power Query

Способ 1: Простая формула с вычитанием (для статичного возраста)

Самый очевидный метод — вычесть дату рождения из текущей даты и разделить на 365. Но он работает только для приблизительного расчёта и не учитывает високосные годы. Формула:

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

Где A2 — ячейка с датой рождения. Например, если сегодня 10.10.2023, а дата рождения 01.01.2000, формула вернёт 23 года. Но если день рождения ещё не наступил в этом году (например, 15.12.2000), Excel покажет 22 — хотя человеку уже исполнилось 23.

  • Плюсы: простая, работает во всех версиях Excel.
  • Минусы: не учитывает точный день рождения, ошибка ±1 год.
  • ⚠️ Ограничение: не подходит для юридических документов или медицинских карт, где важна точность.
⚠️ Внимание: Если в ячейке A2 текст вместо даты (например, "15 мая 1990"), формула вернёт ошибку. Преобразуйте текст в дату через ДАТАЗНАЧ(A2).

Способ 2: Точный расчёт с функцией РАЗНДАТ (рекомендуемый)

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

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

Где:

  • A2 — дата рождения,
  • СЕГОДНЯ() — текущая дата,
  • "y" — параметр для вывода полных лет.

Если нужно показать возраст в формате "23 года, 5 месяцев, 10 дней", используйте:

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " г., " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
Параметр РАЗНДАТ Что возвращает Пример
"y" Полные годы 23
"m" Полные месяцы 285
"d" Полные дни 8765
"ym" Месяцы без учёта лет 5 (если с даты рождения прошло 23 года и 5 месяцев)
"md" Дни без учёта месяцев и лет 10
⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Excel, но работает во всех версиях. В Excel для Mac может потребоваться вводить её на английском: =DATEDIF(A2,TODAY(),"y").

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

Способ 3: Учёт високосных лет и точный день рождения

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

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

Эта формула:

  1. Сравнивает текущий месяц и день с месяцем и днём рождения.
  2. Если сегодняшняя дата позже или равна дню рождения — прибавляет 1 год.
  3. Вычитает год рождения из текущего года и корректирует результат.

Пример: если сегодня 10.10.2023, а дата рождения 15.12.2000, формула вернёт 22 (потому что день рождения ещё не наступил). После 15.12.2023 результат автоматически обновится до 23.

Почему простая формула с делением на 365 не работает?

Потому что в високосном году 366 дней. Если человек родился 29.02.2000, то через год (28.02.2001) простой расчёт покажет 365/365=1 год, хотя фактически прошло только 364 дня. Функция РАЗНДАТ учитывает это автоматически.

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

По умолчанию Excel не пересчитывает формулы с СЕГОДНЯ() при открытии файла. Чтобы возраст всегда был актуальным:

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

Если вы делитесь файлом с коллегами, добавьте кнопку для принудительного пересчёта:

  1. Включите панель разработчика: Файл → Параметры → Настройка ленты → Разработчик.
  2. Нажмите Вставить → Кнопка и нарисуйте её на листе.
  3. Назначьте макрос:
Sub ОбновитьВозраст()

Application.CalculateFull

End Sub

Теперь при нажатии на кнопку все возрасты в файле обновятся.

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

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

=РАЗНДАТ(A2;ДАТА(2020;5;15);"y")

Где ДАТА(2020;5;15) — это 15 мая 2020 года. Чтобы не вводить дату вручную, поместите её в отдельную ячейку (например, B2) и ссылайтесь на неё:

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

Этот метод полезен для:

  • 📅 Расчёта стажа на конкретную дату (например, для отпуска).
  • 👶 Определения возраста ребёнка на момент поступления в школу.
  • 📊 Аналитика по возрастным группам в отчётах.

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

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

  1. Текст вместо даты: Если в ячейке написано "15.05.1990" как текст, Excel не сможет вычесть его из другой даты. Исправляйте через ДАТАЗНАЧ() или ТЕКСТ.В.ДАТУ().
  2. Неправильный регион: В американском Excel даты вводятся как "MM/DD/YYYY", а в российском — "DD.MM.YYYY". Если вы скопировали данные из иностранного источника, переформатируйте их.
  3. Отрицательные значения: Если дата рождения позже текущей даты (например, ошибка ввода), формула вернёт отрицательное число. Добавьте проверку:
=ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"y")<0;"Ошибка даты";РАЗНДАТ(A2;СЕГОДНЯ();"y"))

Также следите за:

  • Временем: Если в дате указано время (например, "15.05.1990 14:30"), используйте ЦЕЛОЕ(A2) для обрезки времени.
  • 🗓️ Форматом ячейки: Дата может отображаться как число (например, 44197). Исправьте формат через Ctrl+1.

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

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

Да, все формулы из этой статьи работают и в Google Sheets. Замените:

  • СЕГОДНЯ()TODAY(),
  • РАЗНДАТDATEDIF (вводится на английском).

Пример: =DATEDIF(A2, TODAY(), "y").

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

Используйте комбинацию:

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " г. " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес."

Для красоты добавьте условие, чтобы скрывать "0 месяцев":

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " г." & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"ym")>0; " " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес."; "")
Почему Excel показывает возраст на год меньше?

Это происходит, если день рождения ещё не наступил в текущем году. Например, если сегодня 10.10.2023, а дата рождения 15.12.2000, то человеку ещё 22 года (23 исполнится только 15.12.2023). Чтобы исправить:

  • Используйте РАЗНДАТ — она учитывает точный день.
  • Или добавьте проверку (см. Способ 3).
Как посчитать возраст для большого списка (1000+ человек)?summary>

Для массового расчёта:

  1. Поместите даты рождения в столбец A (начиная с A2).
  2. В ячейку B2 введите формулу =РАЗНДАТ(A2;СЕГОДНЯ();"y").
  3. Протяните формулу вниз до последней строки (двойной клик по маркеру автозаполнения).

Для ускорения отключите автоматический пересчёт: Формулы → Параметры вычислений → Вручную, и обновляйте данные по кнопке F9.

Можно ли сделать так, чтобы возраст обновлялся каждый день автоматически?

Да, но для этого нужна комбинация из:

  1. Формулы с СЕГОДНЯ().
  2. Настройки автоматического пересчёта (Файл → Параметры → Формулы → Автоматически).
  3. Сохранения файла в формате .xlsm (с поддержкой макросов) и добавления кода для пересчёта при открытии:
Private Sub Workbook_Open()

Application.CalculateFull

End Sub

Вставьте этот код в редактор VBA (Alt+F11 → ThisWorkbook).