Расчёт возраста в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются бухгалтеры, кадровики, учителя и даже обычные пользователи при ведении семейного бюджета. Казалось бы, что может быть проще: вычесть дату рождения из текущей даты? Но на практике здесь кроются подводные камни: неучтённые високосные годы, ошибки с отрицательными значениями, проблемы при копировании формул. Эта статья поможет разобраться, как в Excel сделать формулу возраста так, чтобы она работала корректно в 99% случаев — от базового расчёта в годах до точного учёта месяцев и дней.
Мы рассмотрим не только стандартные функции вроде РАЗНДАТ (DATEDIF), но и альтернативные методы с YEARFRAC, ДАТА, а также научимся обрабатывать ошибки типа #ЧИСЛО! или #ЗНАЧ!. Особое внимание уделим динамическому расчёту — когда возраст автоматически обновляется при изменении текущей даты. Все примеры адаптированы для Excel 2019–2026 и Google Sheets, с учётом их особенностей.
Если вы ранее пытались вычислить возраст через простую разность дат и получали некорректные результаты — эта статья для вас. Мы разберём, почему формула =ГОД(СЕГОДНЯ())-ГОД(A2) даёт сбой, если день рождения ещё не наступил в этом году, и как это исправить. А для продвинутых пользователей приведём примеры расчёта возраста с учётом точного количества дней (например, для медицинских карт или страховых полисов).
1. Базовая формула возраста: РАЗНДАТ (DATEDIF)
Функция РАЗНДАТ (или DATEDIF в английской версии) — самый надёжный способ рассчитать возраст в Excel. Она скрыта в списке функций, но работает во всех версиях программы, включая Excel 365 и Google Таблицы. Синтаксис:
=РАЗНДАТ(дата_рождения; сегодня; "Y")
где:
- 📅
дата_рождения— ячейка с датой (например,A2) - 🔄
сегодня— текущая дата (можно использоватьСЕГОДНЯ()или фиксированную дату) - 🔢
"Y"— формат вывода (годы). Альтернативы:"M"(месяцы),"D"(дни),"YM"(месяцы без учёта лет).
Пример для ячейки B2:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y")
Эта формула вернёт полное количество лет на текущую дату. Если день рождения в этом году ещё не наступил, она автоматически округлит значение в меньшую сторону (например, для даты рождения 15.12.1990 и текущей даты 10.12.2026 результат будет 33 года, а не 34).
Важно: РАЗНДАТ не учитывает время — только календарные даты. Если вам нужно точное количество дней с момента рождения (например, для расчёта страхового стажа), используйте комбинацию с ДАТАЗНАЧ или YEARFRAC (об этом ниже).
2. Альтернативные способы: без РАЗНДАТ
Если по какой-то причине РАЗНДАТ не работает (например, в старых версиях Excel или при импорте данных), можно использовать комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ. Формула выглядит громоздко, но даёт тот же результат:
=ГОД(СЕГОДНЯ())-ГОД(A2)-ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A2))); 1; 0)
Разберём её по частям:
ГОД(СЕГОДНЯ())-ГОД(A2)— разница в годах.ЕСЛИ(...)— проверка, наступил ли день рождения в текущем году:- Если текущий месяц раньше месяца рождения ИЛИ месяц совпадает, но день ещё не наступил — вычитаем 1 год.
Этот метод универсален, но уступает РАЗНДАТ по читаемости. Зато он гарантированно сработает даже в Excel 2003 или при экспорте в другие программы.
3. Точный возраст: годы, месяцы и дни
Часто требуется указать возраст не только в годах, но и с учётом месяцев и дней (например, "25 лет, 3 месяца, 15 дней"). Для этого комбинируем РАЗНДАТ с разными параметрами:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " г., " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
Здесь:
- 📆
"Y"— полные годы. - 📅
"YM"— месяцы без учёта лет (т.е. остаток после вычитания полных лет). - ⏳
"MD"— дни без учёта месяцев и лет.
Критическая особенность: если дата рождения — 31 января, а текущая дата — 1 марта, формула вернёт "1 месяц и 0 дней", хотя фактически прошло 1 месяц и 1 день. Это связано с тем, что Excel не учитывает "лишние" дни в месяцах разной длины. Чтобы исправить это, используйте:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " г., " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & СЕГОДНЯ()-ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(A2); ДЕНЬ(A2)) & " дн."
Почему РАЗНДАТ не учитывает високосные дни?
Функция РАЗНДАТ оперирует календарными интервалами, а не астрономическим временем. Например, разница между 28.02.2020 (високосный год) и 28.02.2021 будет 1 год, хотя фактически прошло 366 дней. Для точного подсчёта дней используйте YEARFRAC с параметром 1 (см. следующий раздел).
4. Расчёт возраста в днях: YEARFRAC и ДАТАЗНАЧ
Для медицинских или юридических документов может потребоваться точный возраст в днях. Здесь поможет функция YEARFRAC, которая возвращает долю года между двумя датами. Синтаксис:
=YEARFRAC(дата_рождения; СЕГОДНЯ(); 1)
где 1 — метод расчёта (учитывает фактическое количество дней в году, включая високосные).
Чтобы получить количество дней, умножьте результат на 365 (или 366 для високосного года):
=YEARFRAC(A2; СЕГОДНЯ(); 1)*365,25
365,25 — среднегодовое количество дней с учётом високосных лет.
Альтернативный способ — просто вычесть даты:
=СЕГОДНЯ()-A2
Но здесь есть нюанс: Excel хранит даты как числа (где 1 = 01.01.1900), поэтому результат будет в формате даты. Чтобы отобразить его как количество дней, измените формат ячейки на Общий или Числовой.
| Метод | Формула | Пример результата | Точность |
|---|---|---|---|
YEARFRAC |
=YEARFRAC(A2;СЕГОДНЯ();1)*365 |
12 345,67 дней | Высокая (учитывает високосные годы) |
| Вычитание дат | =СЕГОДНЯ()-A2 |
12 345 | Средняя (не учитывает время) |
ДАТАЗНАЧ |
=ДАТАЗНАЧ(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2)) |
45 678 (серийный номер) | Низкая (требует преобразования) |
Убедитесь, что дата рождения введена корректно (формат ДД.ММ.ГГГГ)|
Используйте СЕГОДНЯ() для динамического обновления|
Проверьте формат ячейки с результатом (должен быть Общий или Числовой)|
Для медицинских документов используйте YEARFRAC с параметром 1-->
5. Ошибки и их исправление
Даже в простых формулах возраста пользователи сталкиваются с ошибками. Вот самые распространённые и способы их устранения:
⚠️ Внимание: если формула возвращает#ИМЯ?, проверьте регистр функции. В русскоязычном Excel нужно писатьРАЗНДАТ, а неDATEDIF(хотя последняя тоже сработает). В Google Таблицах работает толькоDATEDIF.
- 🔴
#ЧИСЛО!— дата рождения позже текущей даты. Проверьте правильность ввода или используйте=ЕСЛИОШИБКА(РАЗНДАТ(A2;СЕГОДНЯ();"Y"); "Дата в будущем"). - 🔴
#ЗНАЧ!— неверный формат ячейки. Преобразуйте текст в дату с помощьюДАТАЗНАЧ:=РАЗНДАТ(ДАТАЗНАЧ(A2); СЕГОДНЯ(); "Y") - 🔴 Некорректный результат (например, 1 год вместо 0) — проверьте, не установлен ли в ячейке с датой рождения формат Текст. Исправьте через
Формат ячеек → Дата.
Ещё одна типичная проблема — копирование формул. Если вы протягиваете формулу вниз, а ссылка на текущую дату (СЕГОДНЯ()) заменяется на СЕГОДНЯ(A3), зафиксируйте её как абсолютную:
=РАЗНДАТ(A2; $С$ЕГОДНЯ(); "Y")
Но лучше не фиксировать СЕГОДНЯ() вообще — она и так обновляется автоматически.
⚠️ Внимание: в Google Таблицах функцияТДАТА()(аналогСЕГОДНЯ()) обновляется только при открытии файла или изменении данных. Для принудительного обновления нажмитеF9.
6. Динамический возраст: автоматическое обновление
Чтобы возраст пересчитывался каждый день, используйте СЕГОДНЯ() вместо фиксированной даты. Например:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " (" & ТЕКСТ(СЕГОДНЯ(); "ДД.ММ.ГГГГ") & ")"
Эта формула выведет возраст и текущую дату в скобках, например: 30 (15.05.2026).
Для отображения возраста в формате "X лет, Y месяцев" с автоматической корректировкой:
=ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")=0; ""; РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " " & ВЫБОР(РАЗНДАТ(A2;СЕГОДНЯ();"Y"); "год"; "года"; "лет")) & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")=0; ""; ", " & РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " " & ВЫБОР(РАЗНДАТ(A2;СЕГОДНЯ();"YM"); "месяц"; "месяца"; "месяцев"))
Здесь функция ВЫБОР обеспечивает правильное склонение ("год", "года", "лет").
Если вам нужно, чтобы возраст обновлялся каждую секунду (например, для таймера на экране), в Excel это невозможно без VBA. В Google Таблицах используйте скрипт:
function onEdit() {
SpreadsheetApp.flush();
}
Но учтите, что частые обновления могут замедлить работу таблицы.
7. Продвинутые приёмы: возраст на определённую дату
Иногда требуется узнать, сколько человеку было лет на конкретную дату (например, на момент устройства на работу). Для этого замените СЕГОДНЯ() на фиксированную дату:
=РАЗНДАТ(A2; "15.06.2020"; "Y")
Если дата хранится в другой ячейке (например, B2), используйте:
=РАЗНДАТ(A2; B2; "Y")
Для расчёта возраста на конец года (например, для отчётности):
=РАЗНДАТ(A2; ДАТА(ГОД(СЕГОДНЯ())+1; 1; 1); "Y")
Эта формула вернёт возраст на 31 декабря текущего года.
Если вам нужно найти всех, кто достиг определённого возраста (например, 18 лет), используйте условное форматирование:
- Выделите столбец с возрастом.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - Установите условие:
Значение ≥ 18и задайте цвет заливки.
FAQ: Частые вопросы по расчёту возраста в Excel
❓ Почему формула =ГОД(СЕГОДНЯ())-ГОД(A2) даёт неверный результат?
Эта формула не учитывает, наступил ли день рождения в текущем году. Например, если сегодня 10 мая, а день рождения 15 декабря, человек ещё не отметил юбилей, но формула уже прибавит лишний год. Используйте РАЗНДАТ или дополните формулу проверкой месяцев и дней (см. раздел 2).
❓ Как рассчитать возраст в Google Таблицах?
В Google Sheets работает та же функция DATEDIF (аналог РАЗНДАТ), но её нужно вводить вручную — она не отображается в списке функций. Пример:
=DATEDIF(A2; TODAY(); "Y")
Для динамического обновления используйте TODAY() вместо СЕГОДНЯ().
❓ Можно ли рассчитать возраст с учётом времени (часов и минут)?
Да, но для этого нужно, чтобы в ячейке с датой рождения было указано и время (например, 15.05.1990 14:30). Затем используйте:
=СЕГОДНЯ()+СЕЙЧАС()-A2
Результат будет в формате даты-времени. Чтобы отобразить его в днях/часах, измените формат ячейки на Числовой или используйте:
=ТЕКСТ(СЕГОДНЯ()+СЕЙЧАС()-A2; "[ч]:мм:сс")
❓ Как посчитать средний возраст группы людей?
Сначала рассчитайте возраст каждого в отдельном столбце (например, B2:B100), затем используйте СРЗНАЧ:
=СРЗНАЧ(B2:B100)
Если в данных есть пустые ячейки, добавьте проверку:
=СРЗНАЧЕСЛИ(B2:B100; ">0")
❓ Почему в Excel возраст отображается как дата (например, 01.01.1900)?
Это происходит, если вы вычитаете даты (=СЕГОДНЯ()-A2), но формат ячейки установлен как Дата. Измените его на Общий или Числовой через контекстное меню (Формат ячеек).