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

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

Мы рассмотрим не только базовые формулы типа РАЗНДАТ или DATEDIF, но и альтернативные методы для специфических случаев: например, когда нужно посчитать возраст на определённую дату (не текущую) или вывести результат в формате "X лет, Y месяцев, Z дней". Особое внимание уделим типичным ошибкам, из-за которых Excel показывает неверные значения, и способам их обхода. Если вы работаете с персональными данными, кадровыми документами или просто ведёте семейный архив — эти приёмы сэкономят часы ручной правки.

Перед тем как перейти к формулам, важно понять ключевую особенность: Excel хранит даты как последовательные числа, где 1 января 1900 года = 1. Это означает, что любые операции с датами на самом деле — арифметические действия над числами. Именно поэтому простое вычитание =ТДАТА()-A1 (где A1 — дата рождения) вернёт не возраст, а количество дней между датами. Чтобы преобразовать это в годы, месяцы или дни, нужны специальные функции.

📊 Как часто вам приходится считать возраст в Excel?
Ежедневно
Несколько раз в месяц
Рядом
Никогда

1. Базовая формула: функция РАЗНДАТ (DATEDIF)

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

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

Где единица_измерения может принимать следующие значения:

  • 📅 "y" — полные годы между датами
  • 📆 "m" — полные месяцы (без учёта лет)
  • 📌 "d" — дни (без учёта месяцев и лет)
  • 🔢 "ym" — месяцы с учётом лет (например, 3 месяца после последнего дня рождения)
  • 🗓️ "yd" — дни с учётом лет (например, 15 дней с последнего дня рождения)
  • 📊 "md" — разница в днях, игнорируя месяцы и годы

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

=РАЗНДАТ("15.05.1990"; ТДАТА(); "y")
⚠️ Внимание: Если в ячейке с датой рождения указан только год (например, 1990), Excel воспримет его как 01.01.1990. Всегда проверяйте формат ячейки — он должен быть Дата, а не Общий или Текст.

Функция РАЗНДАТ автоматически учитывает високосные годы и разную продолжительность месяцев. Например, если сегодня 10.03.2026, а дата рождения — 29.02.2000, формула вернёт 25 (несмотря на то, что 29 февраля в 2026 году нет).

2. Альтернативные способы: без функции РАЗНДАТ

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

Формула для полных лет:

=ЦЕЛОЕ((ТДАТА()-A1)/365,25)

Здесь 365,25 — средняя продолжительность года с учётом високосных лет. Для точности лучше использовать:

=ГОД(ТДАТА())-ГОД(A1)-ЕСЛИ(ИЛИ(МЕСЯЦ(ТДАТА())<МЕСЯЦ(A1); И(МЕСЯЦ(ТДАТА())=МЕСЯЦ(A1); ДЕНЬ(ТДАТА())<ДЕНЬ(A1))); 1; 0)

Эта формула учитывает, прошёл ли день рождения в текущем году. Например, если сегодня 10.03.2026, а дата рождения — 15.03.1990, результат будет 34 (потому что день рождения ещё не наступил).

Для вывода возраста в формате "X лет, Y месяцев, Z дней" объедините три формулы:

=РАЗНДАТ(A1;ТДАТА();"y") & " лет, " & РАЗНДАТ(A1;ТДАТА();"ym") & " мес., " & РАЗНДАТ(A1;ТДАТА();"md") & " дн."
Почему в формуле используется 365,25, а не 365 или 366?

Средняя продолжительность года в григорианском календаре — 365,2425 дней (учёт високосных лет каждые 4 года, кроме лет, кратных 100, но не 400). Число 365,25 — упрощённое приближение для расчётов, которое даёт минимальную погрешность (1 день за ~100 лет).

3. Расчёт возраста на конкретную дату (не текущую)

Часто требуется узнать возраст не на сегодня, а на определённую дату — например, на момент устройства на работу или получения права. В этом случае вместо ТДАТА() подставляйте нужную дату в формате ДАТА(год;месяц;день) или ссылайтесь на ячейку.

Пример: возраст на 01.01.2020 для даты рождения в ячейке A1:

=РАЗНДАТ(A1; ДАТА(2020;1;1); "y")

Если дата указана в другой ячейке (например, B1), формула упрощается:

=РАЗНДАТ(A1; B1; "y")

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

  1. Введите формулу в первую ячейку (например, C1).
  2. Наведите курсор на правый нижний угол ячейки (появится чёрный крестик).
  3. Протяните формулу вниз до последней строки с данными.
⚠️ Внимание: При протягивании формулы с фиксированной датой (например, ДАТА(2020;1;1)) Excel автоматически корректирует год. Чтобы избежать этого, зафиксируйте ячейку знаком $: =РАЗНДАТ(A1; $B$1; "y").

4. Вывод возраста в разных единицах: годы, месяцы, дни

Иногда требуется не просто количество полных лет, а детализированный результат. Например, для медицинских карт или детских садов важно знать возраст в месяцах, а для юридических документов — в днях. Вот как это сделать:

Единица измерения Формула Пример результата
(дата рождения: 15.05.2020)
Полные годы =РАЗНДАТ(A1;ТДАТА();"y") 4 (на 10.03.2026)
Полные месяцы =РАЗНДАТ(A1;ТДАТА();"m") 58
Дни =РАЗНДАТ(A1;ТДАТА();"d") 1765
Месяцы с последнего дня рождения =РАЗНДАТ(A1;ТДАТА();"ym") 10
Дни с последнего дня рождения =РАЗНДАТ(A1;ТДАТА();"md") 23

Для вывода возраста в формате "X лет и Y месяцев" используйте конкатенацию (&):

=РАЗНДАТ(A1;ТДАТА();"y") & " лет и " & РАЗНДАТ(A1;ТДАТА();"ym") & " мес."

Критическая особенность: Если дата рождения позже текущей даты (например, опечатка в году), Excel вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, добавьте проверку:

=ЕСЛИ(A1>ТДАТА(); "Ошибка: дата в будущем"; РАЗНДАТ(A1;ТДАТА();"y"))

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

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

  • 🔄 Формулы с ТДАТА() пересчитываются при каждом открытии книги или изменении данных.
  • ⏳ Если файл не открывался долго (например, год), возраст обновится только после первого пересчёта (F9).
  • 📥 При экспорте в PDF или печать возраст зафиксируется на момент создания файла.

Чтобы принудительно обновить все даты, нажмите Ctrl + Alt + F9 (полный пересчёт) или перейдите в Формулы → Пересчитать → Пересчитать все.

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

Sub UpdateAges()

Application.CalculateFull

MsgBox "Возраст обновлён!", vbInformation

End Sub

Чтобы запустить его, нажмите Alt + F8, выберите UpdateAges и кликните Выполнить.

Ячейки с датой рождения имеют формат "Дата"|

Формулы используют ТДАТА(), а не фиксированную дату|

В настройках Excel включён автоматический пересчёт (Формулы → Параметры вычислений → Автоматически)|

Файл сохранён в формате .xlsx или .xlsm (не .csv)-->

6. Типичные ошибки и как их избежать

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

Ошибка 1: #ИМЯ?

Причина: Опечатка в названии функции (например, РАЗНДАТА вместо РАЗНДАТ) или использование английской версии (DATEDIF) в русифицированном Excel.

Решение: Проверьте регистр и язык функции. В русской версии правильно — РАЗНДАТ.

Ошибка 2: #ЧИСЛО!

Причины:

  • 🗓️ Дата рождения позже текущей даты (например, 30.02.2026).
  • 📅 Неправильный формат ячейки (текст вместо даты).
  • 🔢 Отрицательное значение в аргументе единица_измерения.

Решение: Добавьте проверку =ЕСЛИОШИБКА(РАЗНДАТ(A1;ТДАТА();"y"); "Ошибка в дате").

Ошибка 3: Неправильный возраст из-за времени

Причина: Если в ячейке с датой рождения указано время (например, 15.05.1990 14:30), Excel учитывает его при вычитании. Это может привести к округлению в меньшую сторону.

Решение: Используйте =ЦЕЛОЕ(A1), чтобы отбросить время, или измените формат ячейки на дд.мм.гггг.

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

Иногда требуется вывести возраст в необычном виде — например, в кварталах, академических годах (с сентября) или даже в часах. Вот несколько примеров:

Возраст в кварталах:

=ЦЕЛОЕ(РАЗНДАТ(A1;ТДАТА();"m")/3) & " квартал(а/ов)"

Возраст в академических годах (с 1 сентября):

=ЕСЛИ(ИЛИ(МЕСЯЦ(ТДАТА())>8; И(МЕСЯЦ(ТДАТА())=8; ДЕНЬ(ТДАТА())>=1)); ГОД(ТДАТА())-ГОД(A1); ГОД(ТДАТА())-ГОД(A1)-1)

Эта формула считает, что новый "год" начинается 1 сентября. Например, если сегодня 10.03.2026, а дата рождения — 15.10.2020, результат будет 4 (потому что с 1 сентября 2026 прошёл новый академический год).

Возраст в часах:

=РАЗНДАТ(A1;ТДАТА();"d")*24 & " часов"

Для визуализации возрастных групп можно использовать условное форматирование:

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

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

Можно ли посчитать возраст без функции РАЗНДАТ?

Да, используйте комбинацию функций ГОД, МЕСЯЦ, ДЕНЬ и ЕСЛИ. Пример:

=ГОД(ТДАТА())-ГОД(A1)-ЕСЛИ(ИЛИ(МЕСЯЦ(ТДАТА())<МЕСЯЦ(A1); И(МЕСЯЦ(ТДАТА())=МЕСЯЦ(A1); ДЕНЬ(ТДАТА())<ДЕНЬ(A1))); 1; 0)

Эта формула учитывает, прошёл ли день рождения в текущем году.

Почему Excel показывает возраст на 1 год меньше?

Скорее всего, сегодняшняя дата ещё не достигла дня рождения в этом году. Например, если день рождения 15.12.1990, а сегодня 10.03.2026, то полных лет ещё 34 (35 исполнится только 15 декабря).

Чтобы показать "фактический" возраст (35 лет), используйте:

=РАЗНДАТ(A1;ТДАТА();"y")+ЕСЛИ(РАЗНДАТ(A1;ТДАТА();"md")>0;1;0)
Как посчитать возраст в Excel Online или Google Sheets?

В Excel Online и Google Sheets функция РАЗНДАТ (DATEDIF) работает аналогично. Синтаксис тот же:

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

Отличие только в названии функции ТДАТА() — в Google Sheets она называется TODAY().

Можно ли посчитать возраст для нескольких дат одновременно?

Да, протяните формулу на весь столбец:

  1. Введите формулу в первую ячейку (например, =РАЗНДАТ(A2;ТДАТА();"y")).
  2. Дважды кликните по правому нижнему углу ячейки (маркер заполнения), чтобы автоматически заполнить формулу до последней заполненной строки в столбце A.

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

Как вывести возраст в формате "25 лет, 3 месяца, 10 дней"?

Используйте конкатенацию с тремя функциями РАЗНДАТ:

=РАЗНДАТ(A1;ТДАТА();"y") & " лет, " & РАЗНДАТ(A1;ТДАТА();"ym") & " мес., " & РАЗНДАТ(A1;ТДАТА();"md") & " дн."

Для красоты можно добавить функцию ЕСЛИ, чтобы скрывать нулевые значения (например, "0 мес." не отображать):

=РАЗНДАТ(A1;ТДАТА();"y") & " лет" & ЕСЛИ(РАЗНДАТ(A1;ТДАТА();"ym")>0; ", " & РАЗНДАТ(A1;ТДАТА();"ym") & " мес."; "") & ЕСЛИ(РАЗНДАТ(A1;ТДАТА();"md")>0; ", " & РАЗНДАТ(A1;ТДАТА();"md") & " дн."; "")