Как правильно рассчитать возраст в Excel: 5 работающих формул с примерами

Расчёт возраста в 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)

Разберём её по частям:

  1. ГОД(СЕГОДНЯ())-ГОД(A2) — разница в годах.
  2. ЕСЛИ(...) — проверка, наступил ли день рождения в текущем году:
    • Если текущий месяц раньше месяца рождения ИЛИ месяц совпадает, но день ещё не наступил — вычитаем 1 год.

Этот метод универсален, но уступает РАЗНДАТ по читаемости. Зато он гарантированно сработает даже в Excel 2003 или при экспорте в другие программы.

📊 Какой способ расчёта возраста вы используете чаще?
Функция РАЗНДАТ
Комбинация ГОД/МЕСЯЦ/ДЕНЬ
Формула с YEARFRAC
Другой вариант

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 лет), используйте условное форматирование:

  1. Выделите столбец с возрастом.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать только ячейки, которые содержат.
  4. Установите условие: Значение ≥ 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), но формат ячейки установлен как Дата. Измените его на Общий или Числовой через контекстное меню (Формат ячеек).