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

Зачем Excelу знать ваш возраст?

Вы когда-нибудь задумывались, сколько времени уходит на ручной расчёт возраста сотрудников в отчётах или возрастной структуры клиентской базы? В Microsoft Excel эту рутину можно автоматизировать за считанные минуты — при условии, что вы знаете правильные формулы. Даже если вы новичок, после прочтения этой статьи сможете вычислять возраст с точностью до дня, месяца или года, учитывая високосные годы и особенности календаря.

Проблема в том, что стандартные функции вроде СЕГОДНЯ() или ДАТА() дают только половину решения. Например, если человек родился 29 февраля, а сегодня 28 февраля следующего года — какой возраст показывать? Или как быть с днём рождения, который ещё не наступил в текущем году? Мы разберём 5 рабочих методов, включая малоизвестные трюки с РАЗНДАТ и массивами, которые спасут ваши нервы и сэкономят часы работы.

Метод 1: Базовая формула с РАЗНДАТ — просто и надёжно

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

=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "y")

Где:

  • 📅 дата_рождения — ячейка с датой (например, A2)
  • 🔄 СЕГОДНЯ() — текущая дата (обновляется автоматически)
  • 📏 "y" — единицы измерения ("y" — годы, "m" — месяцы, "d" — дни)

Пример: если в ячейке A2 указана дата 15.05.1990, формула вернёт текущий возраст в полных годах. Но есть нюанс: РАЗНДАТ не учитывает, наступил ли день рождения в текущем году. Чтобы получить точный возраст с учётом этого, используйте комбинацию:

=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); РАЗНДАТ(A2; СЕГОДНЯ(); "y"); РАЗНДАТ(A2; СЕГОДНЯ(); "y")-1)
⚠️ Внимание: Функция РАЗНДАТ может выдавать ошибку #ИМЯ? в некоторых локализациях Excel. Если это произошло, замените запятые на точку с запятой в формуле или проверьте региональные настройки.

Метод 2: Точный расчёт с учётом месяцев и дней

Часто требуется не просто возраст в годах, а полная детализация: сколько лет, месяцев и дней человеку на сегодня. Для этого модифицируем РАЗНДАТ:

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

Расшифровка параметров:

  • 📅 "y" — полные годы
  • 📆 "ym" — месяцы с момента последнего дня рождения
  • 🕒 "md" — дни с момента последнего месяца рождения

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

ЯчейкаФормулаРезультат
B2=РАЗНДАТ(A2; СЕГОДНЯ(); "y")25
C2=РАЗНДАТ(A2; СЕГОДНЯ(); "ym")3
D2=РАЗНДАТ(A2; СЕГОДНЯ(); "md")14

Критичный нюанс: если дата рождения — 31 января, а текущая дата — 28 февраля, Excel покажет 0 месяцев и 28 дней, хотя фактически прошёл 1 месяц. Чтобы исправить это, используйте альтернативный метод с ДАТА и ЕСЛИ (см. Метод 4).

📊 Какой формат возраста вам нужнее всего?
Только полные годы
Годы и месяцы
Годы, месяцы и дни
Возраст на конкретную дату

Метод 3: Возраст на определённую дату (не сегодня)

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

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

Если дат много, создайте отдельный столбец с целевыми датами (например, B2:B100) и используйте:

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

Пример применения:

  • 📊 Анализ возрастной структуры клиентов на дату покупки
  • 📈 Отчёт о среднем возрасте сотрудников на начало года
  • 🎓 Расчёт возраста студентов на момент поступления
⚠️ Внимание: При работе с большими массивами данных (тысячи строк) избегайте летучих функций вроде СЕГОДНЯ() — они пересчитываются при каждом изменении в книге, тормозя производительность. Вместо этого фиксируйте дату вручную или используйте Power Query.

Убедиться, что даты рождения в формате даты (не текст)|Проверить отсутствие ошибок #ЗНАЧ! в ячейках|Зафиксировать целевую дату (если не сегодня)|Отформатировать ячейки с результатом как "Общий" или "Числовой"-->

Метод 4: Альтернатива РАЗНДАТ — формула массива для сложных случаев

Если РАЗНДАТ не работает (например, в Excel Online или Google Sheets), используйте универсальную формулу:

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

Почему 365,25? Это средняя длина года с учётом високосных лет. Для точности до дней:

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

Параметр 1 в ДОЛЯГОДА указывает метод расчёта (американский стандарт). Альтернативные методы:

  • 📅 0 или опущено — метод NASD (30/360)
  • 📊 2 — фактическое количество дней в году
  • 📈 3 — фактическое количество дней в месяце

Для вывода возраста в формате XX лет YY мес. без РАЗНДАТ:

=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365) & " лет, " & ОСТАТ(МЕСЯЦ(СЕГОДНЯ())-МЕСЯЦ(A2)+12*(ГОД(СЕГОДНЯ())-ГОД(A2)); 12) & " мес."
Почему 365,25, а не 365 или 366?

Дело в том, что средняя длина года в григорианском календаре — 365,2425 дней (учёт високосных лет каждые 4 года, кроме лет, кратных 100, но не 400). Использование 365,25 даёт погрешность ~1 день за 100 лет, что приемлемо для большинства задач. Для научных расчётов используйте точную константу 365,2425.

Метод 5: Возраст в годах с учётом будущего дня рождения

Если сегодня 10 марта, а день рождения 15 марта, стандартные формулы покажут возраст на год меньше, чем нужно. Исправляем это логической проверкой:

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

Разберём по шагам:

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

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

  1. Выделите ячейки с возрастом.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу... и введите:
    =И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A2))
  4. Задайте красный цвет заполнения.

Распространённые ошибки и как их избежать

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

ОшибкаПричинаРешение
#ИМЯ?Опечатка в названии функции или неверный разделительПроверьте регистр и замените запятые на точку с запятой
#ЗНАЧ!Ячейка содержит текст вместо датыИспользуйте ДАТАЗНАЧ() для преобразования текста в дату
Неправильный возрастНе учтён високосный годИспользуйте 365,25 или ДОЛЯГОДА
Отрицательное значениеДата рождения позже текущей датыДобавьте проверку =ЕСЛИ(A2>СЕГОДНЯ(); "Ошибка"; формула)
Медленный пересчётСлишком много летучих функцийЗамените СЕГОДНЯ() на фиксированную дату

Если вы работаете с Google Sheets, учтите, что там нет функции РАЗНДАТ. Вместо неё используйте:

=ARRAYFORMULA(INT((TODAY()-A2:A100)/365.25))

Для проверки корректности дат добавьте столбец с валидацией:

=ЕСЛИ(И(ГОД(A2)>=1900; ГОД(A2)<=ГОД(СЕГОДНЯ())); "OK"; "Ошибка в дате")

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

Как рассчитать возраст в Excel, если дата рождения в текстовом формате (например, "15 мая 1990")?

Используйте функцию ДАТАЗНАЧ для преобразования текста в дату:

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

Если формат нестандартный (например, "15.05.1990 г."), очистите данные через Промежуточный результат или Power Query.

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

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

  1. Создайте ячейку с датой отчёта (например, B1).
  2. Замените СЕГОДНЯ() на $B$1.
  3. Защитите ячейку B1 от изменений.
Как посчитать средний возраст группы людей?

Используйте функцию СРЗНАЧ для столбца с возрастом:

=СРЗНАЧ(B2:B100)

Если возраст рассчитывается формулой, сделайте вспомогательный столбец с числовыми значениями, иначе СРЗНАЧ проигнорирует текстовые результаты.

Почему Excel показывает возраст на год меньше, чем нужно?

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

=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); РАЗНДАТ(A2; СЕГОДНЯ(); "y"); РАЗНДАТ(A2; СЕГОДНЯ(); "y")-1)
Как экспортировать таблицу с возрастами в Word или PDF без потери форматирования?

Следуйте алгоритму:

  1. Выделите диапазон данных.
  2. Нажмите Ctrl + C.
  3. В Word выберите Главная → Вставить → Специальная вставка → Сохранить исходное форматирование.
  4. Для PDF используйте Файл → Экспорт → Создать PDF/XPS.

Если возраст отображается как дата (например, "25.01.1900"), перед экспортом отформатируйте ячейки как Общий.