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

Расчёт возраста в Microsoft Excel — одна из самых востребованных задач при работе с персональными данными, кадровыми отчётами или медицинскими картами. На первый взгляд кажется, что достаточно вычесть дату рождения из текущей даты, но на практике всё сложнее: нужно учитывать месяцы, дни, високосные годы и даже региональные форматы дат. Ошибка в формуле может привести к неточным результатам — например, показать 25 лет вместо 26, если день рождения ещё не наступил в этом году.

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

1. Базовый метод: вычитание дат и деление на 365

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

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

Этот метод работает, но имеет критическую погрешность: он не учитывает високосные годы (в них 366 дней). Например, если человек родился 29 февраля 2000 года, формула покажет на 1 день меньше через 4 года. Для приблизительных расчётов сгодится, но для точных данных лучше использовать другие функции.

  • Плюсы: простота, не требует специальных функций.
  • Минусы: погрешность ±1 день из-за високосных лет.
  • 🔹 Когда использовать: для быстрых прикидок, где точность до дня не важна.
⚠️ Внимание: Если в ячейке с датой рождения стоит текст (например, "01.01.1990" без формата даты), Excel вернёт ошибку. Проверьте формат ячейки: он должен быть Дата, а не Текст.

2. Функция РАЗНДАТ (DATEDIF): точный расчёт в годах, месяцах и днях

РАЗНДАТ (или DATEDIF в английской версии Excel) — это скрытая функция, которой нет в списке мастер-функций, но она работает во всех версиях Excel, включая Excel 365 и Excel 2019. Её синтаксис:

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

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

  • "y" — полные годы;
  • "m" — полные месяцы;
  • "d" — дни;
  • "ym" — месяцы без учёта лет;
  • "yd" — дни без учёта лет;
  • "md" — разница в днях без учёта месяцев и лет.

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

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

Результат будет выглядеть как строка: "25 лет, 3 мес., 15 дн.".

📊 Какую версию Excel вы используете?
Excel 365
Excel 2019
Excel 2016
Excel 2013 или старше
Не знаю
Единица измерения Пример формулы Результат для даты рождения 15.05.1995 (на 20.10.2023)
"y" =РАЗНДАТ(A2;СЕГОДНЯ();"y") 28
"ym" =РАЗНДАТ(A2;СЕГОДНЯ();"ym") 5
"md" =РАЗНДАТ(A2;СЕГОДНЯ();"md") 5
"d" =РАЗНДАТ(A2;СЕГОДНЯ();"d") 10050
⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Microsoft, но работает во всех версиях Excel. В Excel для Mac может потребоваться вводить её вручную — автозаполнение не сработает.

3. Функция ДАТАРАЗН: альтернатива для новых версий Excel

В Excel 365 и Excel 2021 появилась новая функция ДАТАРАЗН (DATEDIFF в английской версии), которая решает ту же задачу, но с более понятным синтаксисом:

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

Единицы измерения здесь указываются числом:

  • 1 — годы;
  • 2 — месяцы;
  • 3 — дни.

Пример для расчёта полных лет:

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

Преимущество ДАТАРАЗН перед РАЗНДАТ — официальная поддержка Microsoft и автозаполнение в формулах. Однако в старых версиях Excel (до 2019) этой функции нет.

Убедитесь, что у вас Excel 365 или 2021|

Проверьте региональные настройки (функция может называться DATEDIFF)|

Преобразуйте текстовые даты в формат даты Excel|

Сравните результат с РАЗНДАТ для точности-->

4. Расчёт возраста на определённую дату (не сегодня)

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

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

Если дата события в будущем (например, планируемая дата выхода на пенсию), формула вернёт отрицательное число. Чтобы избежать ошибок, добавьте проверку:

=ЕСЛИ(B2>A2; РАЗНДАТ(A2;B2;"y"); "Дата некорректна")

Для расчёта возраста на дату 31 декабря текущего года (полезно для отчётов) используйте:

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

5. Автоматическое обновление возраста при изменении даты

По умолчанию Excel не обновляет формулы в реальном времени — для этого нужно нажать F9 или изменить любую ячейку. Однако есть два способа заставить возраст обновляться автоматически:

  1. Использовать СЕГОДНЯ(): Эта функция пересчитывается при каждом открытии файла или изменении данных.
  2. Включить автоматический пересчёт: Перейдите в Файл → Параметры → Формулы и выберите Автоматически в разделе Параметры вычислений.

Если вам нужно, чтобы возраст обновлялся каждую минуту (например, для дашборда), используйте VBA-макрос:

Private Sub Worksheet_Calculate()

Application.OnTime Now + TimeValue("00:01:00"), "UpdateAge"

End Sub

Sub UpdateAge()

ThisWorkbook.RefreshAll

End Sub

Этот код будет принудительно обновлять все формулы каждую минуту. Вставьте его в модуль листа (нажмите Alt + F11, найдите свой лист в VBAProject и вставьте код в окно).

⚠️ Внимание: Частый автоматический пересчёт может замедлить работу Excel, если в файле много формул. Используйте этот метод только при необходимости.

6. Распространённые ошибки и как их исправить

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

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

Ещё одна распространённая проблема — региональные настройки. Если в вашем Excel разделитель десятичных дробей — запятая, а в формуле используется точка, возникнет ошибка. Например, в русской версии Excel формула должна выглядеть так:

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

А в английской:

=DATEDIF(A2,TODAY(),"y")
Почему РАЗНДАТ иногда показывает неверный возраст?

Функция РАЗНДАТ считает полные годы только если дата рождения уже прошла в текущем году. Например, если сегодня 10 января 2023, а день рождения 15 января 1990, функция вернёт 32 года, хотя фактически человеку ещё 32. Это не ошибка, а особенность логики Excel. Чтобы получить "округлённый" возраст (как принято в быту), добавьте условие:

=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); РАЗНДАТ(A2;СЕГОДНЯ();"y"); РАЗНДАТ(A2;СЕГОДНЯ();"y")-1)

7. Продвинутые приёмы: возраст в текстовом формате и условное форматирование

Иногда возраст нужно представить не как число, а как текст — например, "25 лет и 3 месяца". Для этого комбинируйте функции РАЗНДАТ и ТЕКСТ:

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет и " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " месяцев"

Чтобы автоматически склонять слово "год" (1 год, 2 года, 5 лет), используйте функцию ВЫБОР:

=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " " & ВЫБОР(МОД(РАЗНДАТ(A2;СЕГОДНЯ();"y");100);

"лет"; ВЫБОР(МОД(РАЗНДАТ(A2;СЕГОДНЯ();"y");10);1;"год";2:4;"года";"лет");

"лет")

Для визуального выделения возрастных групп (например, детей до 18 лет) используйте условное форматирование:

  1. Выделите ячейки с возрастом.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать только ячейки, которые содержат.
  4. Установите условие: Значение меньше 18 и выберите цвет заливки (например, жёлтый).

FAQ: Частые вопросы о расчёте возраста в Excel

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

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

=РАЗНДАТ(ДАТАЗНАЧ("1 января 1990");СЕГОДНЯ();"y")

Если даты хранятся в ячейках в виде текста, примените ДАТАЗНАЧ к каждой ячейке или используйте Текст по столбцам (на вкладке Данные), чтобы разделить день, месяц и год.

Почему функция РАЗНДАТ не работает в Excel для Mac?

В некоторых версиях Excel для Mac функция РАЗНДАТ может не распознаваться из-за особенностей локализации. Попробуйте:

  1. Ввести функцию вручную (без автозаполнения).
  2. Использовать английскую версию: =DATEDIF(A2,TODAY(),"y").
  3. Обновить Excel до последней версии.

Если ничего не помогает, замените РАЗНДАТ на комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ.

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

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

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

Здесь 365,25 — среднее количество дней в году с учётом високосных (1 день каждые 4 года).

Можно ли рассчитать возраст в Google Таблицах?

Да, в Google Sheets используется тот же синтаксис, что и в Excel. Например:

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

Отличия:

  • Функция ДАТАРАЗН в Google Таблицах называется DATEDIFF и поддерживается официально.
  • Региональные настройки не влияют на названия функций (они всегда на английском).
Как посчитать средний возраст группы людей?

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

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

Важно: это массивая формула. В старых версиях Excel нажмите Ctrl + Shift + Enter, чтобы она сработала корректно. В Excel 365 и 2019 достаточно просто нажать Enter.