Расчет возраста в Microsoft Excel или Google Таблицах — казалось бы, простая задача. Но когда нужно узнать, сколько лет исполнится человеку не сегодня, а в произвольном году (например, в 2026, 2030 или даже 1995), многие сталкиваются с ошибками. То ли формула выдает неверное значение, то ли не учитывает високосные годы, то ли просто "ломается" при изменении даты. А если еще и день рождения в декабре, а расчет ведется на январь следующего года — тут уже и вовсе начинается путаница.
На практике такие вычисления востребованы в HR-отделах (для планирования юбилеев сотрудников), в образовательных учреждениях (для определения возрастных групп учеников), а также в личных финансовых расчетах (например, для страховок или пенсионных накоплений). В этой статье разберем три надежных метода, которые работают даже с "проблемными" датами, и покажем, как избежать типичных ошибок при использовании функций РАЗНДАТ (DATEDIF), ГОД и комбинаций из них.
———
Почему простой вычитание годов дает ошибку
Самый распространенный "костыль", который используют новички — это вычитать год рождения из целевого года. Например, если человек родился в 1985, а нужно узнать его возраст в 2026, многие пишут формулу:
=2026-1985
На выходе получаем 40 лет. Но этот метод не учитывает месяц и день рождения. Если человек родился в декабре 1985, а расчет ведется на январь 2026, то на самом деле ему еще только 39 лет. А если день рождения в январе, но расчет на декабрь 2026 — формула покажет лишний год.
Еще одна ловушка — високосные годы. Например, если человек родился 29 февраля 1988 года, а вы рассчитываете его возраст на 2023 год (невисокосный), то простая разница в годах даст некорректный результат. Excel автоматически сдвигает дату на 28 февраля или 1 марта в зависимости от настроек, что может исказить итоговый возраст.
———
Метод 1: Функция РАЗНДАТ (DATEDIF) — универсальное решение
Функция РАЗНДАТ (или DATEDIF в английской версии) специально создана для расчета разницы между двумя датами в годах, месяцах или днях. Ее главное преимущество — она автоматически учитывает месяц и день рождения, поэтому ошибок с "лишними" годами не возникает.
Синтаксис функции:
=РАЗНДАТ(дата_рождения; целевая_дата; "Y")
где:
- 📅
дата_рождения— ячейка с датой рождения (например,A2) - 🎯
целевая_дата— дата, на которую нужно рассчитать возраст (например,1.01.2026) - 🔢
"Y"— параметр, указывающий, что нужно вернуть разницу в полных годах
Пример: если в ячейке A2 указана дата рождения 15.05.1990, а в B2 — целевая дата 30.06.2026, формула будет такой:
=РАЗНДАТ(A2; B2; "Y")
Результат: 35 лет (потому что на 30 июня 1990 года еще не исполнилось 36).
⚠️
Внимание! Функция РАЗНДАТ не документирована в официальной справке Excel, но работает во всех версиях программы. В Google Таблицах она тоже доступна, но может требовать ручного ввода (автозаполнение не срабатывает).
———
Метод 2: Комбинация функций ГОД, МЕСЯЦ и ДЕНЬ
Если по какой-то причине РАЗНДАТ не работает (например, в старых версиях Excel или в некоторых локализациях), можно использовать альтернативный подход с проверкой полного прохождения дня рождения. Формула выглядит так:
=ЕСЛИ(ИЛИ(МЕСЯЦ(целевая_дата)<МЕСЯЦ(дата_рождения); И(МЕСЯЦ(целевая_дата)=МЕСЯЦ(дата_рождения); ДЕНЬ(целевая_дата)<ДЕНЬ(дата_рождения)))); ГОД(целевая_дата)-ГОД(дата_рождения)-1; ГОД(целевая_дата)-ГОД(дата_рождения))
Разберем по шагам:
- Сначала проверяем, прошел ли день рождения в целевом году:
- 📅 Если месяц целевой даты меньше месяца рождения ИЛИ
- 📅 Месяцы совпадают, но день целевой даты меньше дня рождения → вычитаем 1 год из разницы.
Пример для даты рождения 29.02.2000 и целевой даты 15.02.2026:
- Февраль 2026 еще не наступил → условие
МЕСЯЦ(целевая_дата)<МЕСЯЦ(дата_рождения)ложно. - Но день (15) меньше 29 → второе условие истинно → возраст = 2026 - 2000 - 1 = 24 года.
⚠️
Внимание! Эта формула не учитывает високосные годы для 29 февраля. Если целевой год невисокосный, а день рождения 29.02, Excel автоматически сдвинет дату на 28.02 или 01.03, что может исказить результат. В таких случаях лучше использовать РАЗНДАТ.
———
☑️ Проверка корректности формулы возраста
Метод 3: Динамический расчет с функцией СЕГОДНЯ
Если вам нужно рассчитать возраст на текущую дату (которая постоянно обновляется), используйте функцию СЕГОДНЯ() в комбинации с РАЗНДАТ:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y")
Эта формула будет автоматически пересчитывать возраст каждый раз при открытии файла. Например, если сегодня 10.10.2026, а в ячейке A2 указана дата 05.05.1987, результат будет 37 лет.
Для расчета возраста на конкретный будущий год (например, 2030) замените СЕГОДНЯ() на фиксированную дату:
=РАЗНДАТ(A2; ДАТА(2030;1;1); "Y")
Здесь ДАТА(2030;1;1) создает дату 1 января 2030 года. Если день рождения в 1987 году был до 1 января, формула вернет 42 года, если после — 41 год.
💡
———
Ошибки и их решения: почему Excel неправильно считает возраст
Даже с правильными формулами иногда возникают неточности. Рассмотрим типичные проблемы и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
| Возраст на 1 год больше/меньше | Не учтен месяц и день рождения | Использовать РАЗНДАТ с параметром "Y" или комбинацию ГОД+МЕСЯЦ+ДЕНЬ |
Ошибка #ИМЯ? |
Опечатка в названии функции (например, РАЗНДАТА вместо РАЗНДАТ) |
Проверить синтаксис. В английской версии использовать DATEDIF |
| Некорректный результат для 29.02 | Целевой год невисокосный | Добавить проверку на високосность или использовать РАЗНДАТ с параметром "YM" для уточнения |
| Формула не обновляется | Отключен автоматический пересчет | Включить в Формулы → Параметры вычислений → Автоматически |
🔍 Используйте формулу Как проверить, високосный ли год в Excel?
=ЕСЛИ(ИЛИ(ОСТАТ(GOD(год);400)=0; И(ОСТАТ(GOD(год);4)=0; ОСТАТ(GOD(год);100)<>0))); "Високосный"; "Невисокосный"). Например, для 2026 года формула вернет "Високосный".
———
Продвинутые сценарии: расчет возраста в годах, месяцах и днях
Иногда требуется не только количество полных лет, но и точный возраст с учетом месяцев и дней. Например, для медицинских карт или спортивных соревнований. В этом случае используйте РАЗНДАТ с разными параметрами:
Формула для вывода возраста в формате "X лет, Y месяцев, Z дней":
=РАЗНДАТ(A2; B2; "Y") & " лет, " & РАЗНДАТ(A2; B2; "YM") & " месяцев, " & РАЗНДАТ(A2; B2; "MD") & " дней"
Где:
"Y"— полные годы"YM"— месяцы с момента последнего дня рождения"MD"— дни с момента последнего месяца
Пример для даты рождения 15.03.2000 и целевой даты 10.10.2026:
РАЗНДАТ(A2; B2; "Y")→ 24 годаРАЗНДАТ(A2; B2; "YM")→ 6 месяцев (с 15 марта по 15 сентября)РАЗНДАТ(A2; B2; "MD")→ 25 дней (с 15 сентября по 10 октября)
Итог: "24 лет, 6 месяцев, 25 дней".
⚠️
Внимание! Если целевая дата раньше даты рождения, формула вернет ошибку#ЧИСЛО!. Чтобы избежать этого, добавьте проверку:=ЕСЛИ(B2
———
Автоматизация: как рассчитать возраст для списка дат
Если у вас таблица с сотнями строк (например, список сотрудников или учеников), можно автоматизировать расчет возраста на определенную дату. Для этого:
- Создайте столбец с датами рождения (например,
A2:A100). - В соседнем столбце укажите целевую дату (или используйте
СЕГОДНЯ()для динамического расчета). - Примените формулу
РАЗНДАТи растяните ее на все строки:=РАЗНДАТ($A2; $B$1; "Y")Где
$B$1— фиксированная ячейка с целевой датой (например,01.01.2026).
📌
———
FAQ: Частые вопросы о расчете возраста в Excel
Как посчитать возраст, если день рождения 29 февраля, а целевой год невисокосный?
Excel автоматически сдвигает 29.02 на 28.02 в невисокосные годы. Чтобы избежать ошибок, используйте формулу:
=ЕСЛИ(И(ДЕНЬ(A2)=29; МЕСЯЦ(A2)=2; НЕ(ИЛИ(ОСТАТ(ГОД(B2);400)=0; И(ОСТАТ(ГОД(B2);4)=0; ОСТАТ(ГОД(B2);100)<>0))))); РАЗНДАТ(A2; B2; "Y")-1; РАЗНДАТ(A2; B2; "Y"))
Она проверяет, является ли целевой год високосным, и при необходимости корректирует возраст.
Можно ли рассчитать возраст в Google Таблицах?
Да, в Google Таблицах работает та же функция РАЗНДАТ (DATEDIF), но ее нужно вводить вручную (автозаполнение не срабатывает). Альтернатива — использовать =INT((B2-A2)/365.25), но она менее точна из-за округления.
Как посчитать возраст на конкретную дату в прошлом (например, в 2010 году)?
Используйте ту же функцию РАЗНДАТ, но укажите прошлую дату во втором аргументе:
=РАЗНДАТ(A2; ДАТА(2010;12;31); "Y")
Это покажет, сколько полных лет было человеку на 31 декабря 2010 года.
Почему формула выдает отрицательное число?
Отрицательный результат означает, что целевая дата раньше даты рождения. Например, если пытаться рассчитать возраст человека, родившегося в 2000 году, на 1995 год. Добавьте проверку:
=ЕСЛИ(B2
Как округлить возраст до ближайшего года (например, для статистики)?
Используйте функцию ОКРУГЛ с параметром 0:
=ОКРУГЛ((B2-A2)/365; 0)
Но учтите, что этот метод приблизительный и не учитывает високосные годы. Для точности лучше комбинировать РАЗНДАТ с проверкой месяца и дня.