Расчёт возраста в Microsoft Excel — одна из самых востребованных задач при работе с датами. Казалось бы, что может быть проще: вычесть дату рождения из текущей даты? Но на практике пользователи сталкиваются с ошибками вроде некорректного отображения месяцев, игнорирования високосных лет или "сбивающихся" результатов при обновлении файла. Эта статья поможет разобраться, как точно вычислить возраст — будь то в годах, месяцах или даже днях — с учётом всех нюансов календаря.
Мы рассмотрим не только базовые формулы типа РАЗНДАТ или DATEDIF, но и альтернативные методы для специфических случаев: например, когда нужно посчитать возраст на определённую дату (не текущую) или вывести результат в формате "X лет, Y месяцев, Z дней". Особое внимание уделим типичным ошибкам, из-за которых Excel показывает неверные значения, и способам их обхода. Если вы работаете с персональными данными, кадровыми документами или просто ведёте семейный архив — эти приёмы сэкономят часы ручной правки.
Перед тем как перейти к формулам, важно понять ключевую особенность: Excel хранит даты как последовательные числа, где 1 января 1900 года = 1. Это означает, что любые операции с датами на самом деле — арифметические действия над числами. Именно поэтому простое вычитание =ТДАТА()-A1 (где A1 — дата рождения) вернёт не возраст, а количество дней между датами. Чтобы преобразовать это в годы, месяцы или дни, нужны специальные функции.
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")
Для массового расчёта (например, для списка сотрудников) используйте протягивание формулы:
- Введите формулу в первую ячейку (например,
C1). - Наведите курсор на правый нижний угол ячейки (появится чёрный крестик).
- Протяните формулу вниз до последней строки с данными.
⚠️ Внимание: При протягивании формулы с фиксированной датой (например,ДАТА(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 & " часов"
Для визуализации возрастных групп можно использовать условное форматирование:
- Выделите ячейки с возрастом.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек. - Выберите "Больше или равно" и укажите значение (например,
18). - Задайте цвет заполнения (например, зелёный для совершеннолетних).
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().
Можно ли посчитать возраст для нескольких дат одновременно?
Да, протяните формулу на весь столбец:
- Введите формулу в первую ячейку (например,
=РАЗНДАТ(A2;ТДАТА();"y")). - Дважды кликните по правому нижнему углу ячейки (маркер заполнения), чтобы автоматически заполнить формулу до последней заполненной строки в столбце
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") & " дн."; "")