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

Расчёт возраста в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются HR-специалисты, медицинские работники, учителя и даже обычные пользователи при ведении семейного бюджета или планировании мероприятий. Казалось бы, что может быть проще: вычесть дату рождения из текущей даты? Но на практике здесь кроются подводные камни: високосные годы, неполные месяцы, ошибки формата ячеек и даже региональные настройки Excel, которые могут искажать результат.

В этой статье вы найдёте 5 проверенных способов посчитать возраст — от простейших формул до универсальных решений, работающих в любых версиях Excel (включая Excel 365, Excel 2019 и Excel Online). Мы разберём, как избежать ошибки #ЧИСЛО!, почему функция РАЗНДАТ может не работать, и как автоматически обновлять возраст при открытии файла. А в конце — FAQ с ответами на частые вопросы и готовые шаблоны для скачивания.

1. Простейший способ: вычитание дат

Самый очевидный метод — вычесть дату рождения из текущей даты. Например, если в ячейке A2 указана дата рождения (15.05.1990), а в B2 нужно получить возраст в годах, формула будет такой:

=ГОД(СЕГОДНЯ())-ГОД(A2)

Но у этого способа есть критическая ошибка: он не учитывает, прошёл ли день рождения в текущем году. Например, если сегодня 10.01.2026, а день рождения 15.05.1990, формула вернёт 34, хотя человеку ещё только 33. Чтобы исправить это, добавьте проверку:

=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); ГОД(СЕГОДНЯ())-ГОД(A2); ГОД(СЕГОДНЯ())-ГОД(A2)-1)
⚠️ Внимание: Если в ячейке с датой рождения указан только год (например, 1990 вместо 15.05.1990), Excel воспримет его как 01.01.1990. Это приведёт к неверному расчёту для людей, родившихся во второй половине года.
  • Плюсы: Простота, работает во всех версиях Excel.
  • Минусы: Не учитывает високосные годы при расчёте в днях, требует ручной корректировки для точности.
📊 Как часто вам нужно считать возраст в Excel?
Ежедневно
Раз в неделю
Раз в месяц
Редее
Никогда

2. Функция РАЗНДАТ (DATEDIF): универсальное решение

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

=РАЗНДАТ(дата_начала; дата_конца; единица_измерения)

Где единица_измерения может принимать значения:

  • "Y" — полные годы;
  • "M" — полные месяцы;
  • "D" — дни;
  • "YM" — месяцы без учёта годов;
  • "MD" — дни без учёта месяцев и годов;
  • "YD" — дни без учёта годов (с учётом месяцев).

Пример для расчёта возраста в годах:

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

А так можно вывести возраст в формате "33 года, 2 месяца, 15 дней":

=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " года, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
⚠️ Внимание: В Google Таблицах функция DATEDIF работает, но может выдавать ошибку, если дата конца раньше даты начала. Всегда проверяйте порядок аргументов!

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

-->

3. Формула ДАТАРАЗН (DATEDIFF) в Power Query

Если вам нужно рассчитать возраст для большого массива данных (например, для 10 000 сотрудников), удобнее использовать Power Query — инструмент для обработки данных в Excel. Он позволяет автоматизировать расчёты и избежать ошибок при копировании формул.

Алгоритм действий:

  1. Выделите таблицу с датами рождения.
  2. Перейдите на вкладку ДанныеИз таблицы/диапазонаExcel 2016+).
  3. В открывшемся редакторе Power Query добавьте новый столбец: Добавить столбецНастраиваемый столбец.
  4. Введите формулу:
    = Date.From(DateTime.LocalNow()) - [Дата рождения]

    где [Дата рождения] — название вашего столбца.

  5. Нажмите ОК и загрузите данные обратно в Excel.

Результат будет в днях. Чтобы перевести его в годы, добавьте ещё один столбец с формулой:

= Number.RoundDown([Возраст в днях]/365.25; 0)

Важно: в Power Query используется точная разница в днях с учётом високосных годов (деление на 365.25), поэтому результат точнее, чем при простом делении на 365.

Метод Точность Сложность Подходит для больших данных
Вычитание дат Низкая (ошибки на границах месяцев) Просто Нет
РАЗНДАТ (DATEDIF) Высокая Средне Да (но медленно)
Power Query Максимальная Сложно Да (оптимально)
VBA-скрипт Высокая Очень сложно Да

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

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

  1. Используйте функцию СЕГОДНЯ() в формулах (она пересчитывается при каждом открытии).
  2. Если нужно фиксировать возраст на определённую дату (например, на 1 января 2026 года), замените СЕГОДНЯ() на "01.01.2026".
  3. Для принудительного пересчёта нажмите F9.

Пример формулы с фиксированной датой:

=РАЗНДАТ(A2; "01.01.2026"; "Y")
⚠️ Внимание: В Google Таблицах функция TODAY() обновляется каждые 30 минут, а не при открытии файла. Для мгновенного пересчёта используйте комбинацию Ctrl + Alt + Shift + F9.

5. Расчёт возраста в днях, месяцах и годах с учётом високосных лет

Для максимальной точности (например, в медицинских расчётах) важно учитывать високосные годы. Вот универсальная формула, которая выводит возраст в формате "X лет, Y месяцев, Z дней":

=ЕСЛИ(

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

"";

РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")=1;"год";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")<5;"года";"лет")) & ", "

) &

ЕСЛИ(

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

"";

РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")=1;"месяц";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")<5;"месяца";"месяцев")) & ", "

) &

РАЗНДАТ(A2;СЕГОДНЯ();"MD") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"MD")=1;"день";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"MD")<5;"дня";"дней"))

Эта формула:

  • Корректно склоняет слова ("год", "года", "лет");
  • Пропускает нулевые значения (например, если месяцев 0, они не отобразятся);
  • Учитывает високосные годы через функцию РАЗНДАТ.
Почему 29 февраля — проблема для Excel?

Excel хранит даты как числа, где 1 = 01.01.1900. В високосном году (например, 2020) 29 февраля существует, но в невисокосном (2021) — нет. Если в ячейке указана дата 29.02.2020, а вы пытаетесь прибавить 1 год (=A2+365), Excel автоматически скорректирует её на 01.03.2021, что может исказить расчёты. Всегда используйте РАЗНДАТ или ДАТА() для работы с такими датами.

6. Ошибки и их решение

Даже в простых формулах Excel может выдавать ошибки. Вот самые частые проблемы и способы их исправления:

Ошибка Причина Решение
#ЧИСЛО! Дата рождения позже текущей даты Проверьте порядок аргументов в РАЗНДАТ или используйте ЕСЛИОШИБКА
#ЗНАЧ! Ячейка содержит текст вместо даты Используйте ДАТАЗНАЧ() или измените формат ячейки
Неверный возраст (на 1 год больше/меньше) Не учтён день рождения в текущем году Добавьте проверку с ЕСЛИ (см. раздел 1)
Формула не обновляется Отключён автоматический пересчёт Включите в Формулы → Параметры вычислений → Автоматически

Если вы работаете с Google Таблицами, обратите внимание на региональные настройки. Например, в российской версии разделителем аргументов функции является ;, а в американской — ,. Чтобы избежать ошибок, используйте универсальный синтаксис:

=DATEDIF(A2; TODAY(); "Y")

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

Как посчитать возраст на конкретную дату (не сегодня)?

Замените СЕГОДНЯ() на фиксированную дату в формате "ДД.ММ.ГГГГ". Например, для расчёта возраста на 31 декабря 2023 года:

=РАЗНДАТ(A2; "31.12.2023"; "Y")
Почему Excel показывает возраст на 1 год меньше?

Скорее всего, сегодняшняя дата раньше дня рождения в текущем году. Например, если сегодня 10.01.2026, а день рождения 15.05.1990, человеку ещё не исполнилось 34. Используйте формулу с проверкой (см. раздел 1) или РАЗНДАТ.

Как посчитать возраст в месяцах для ребёнка до года?

Используйте РАЗНДАТ с аргументом "M":

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

Для вывода в формате "5 месяцев и 3 дня":

=РАЗНДАТ(A2; СЕГОДНЯ(); "M") & " мес. и " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
Можно ли автоматически раскрасить ячейки по возрасту (например, красным для >60 лет)?

Да, используйте условное форматирование:

  1. Выделите ячейки с возрастом.
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать только ячейки, которые содержат.
  4. Установите условие "больше" 60 и выберите красный цвет.
Как экспортировать таблицу с возрастами в PDF без потери форматирования?

Перед экспортом:

  1. Закрепите области (Вид → Закрепить области), чтобы шапка таблицы оставалась видимой.
  2. Установите параметры страницы (Разметка страницы → Параметры страницы), чтобы данные не обрезались.
  3. Сохраните как PDF через Файл → Экспорт → Создать PDF/XPS.

В Google Таблицах используйте Файл → Скачать → PDF-документ.