Расчёт возраста в Microsoft Excel — одна из самых востребованных задач при работе с датами.hether вы ведёте кадровый учёт, анализируете демографические данные или просто хотите узнать, сколько лет прошло с момента покупки оборудования, без корректного вычисления возраста не обойтись. Проблема в том, что Excel не имеет встроенной функции "ВОЗРАСТ", а стандартные операции с датами часто дают сбой из-за форматов ячеек или особенностей календаря (например, високосных лет).
Многие пользователи допускают критическую ошибку: вычитают год рождения из текущего года и получают неверный результат. Такой подход игнорирует месяцы и дни, из-за чего возраст может быть завышен на 1 год. Например, если сегодня 1 марта 2026, а дата рождения — 15 декабря 2000, простая формула `=2026-2000` даст 24 года, хотя на самом деле человеку ещё только 23. В этой статье разберём 5 надёжных способов посчитать возраст в Excel — от базовых формул до автоматизированных решений с учётом текущей даты.
1. Базовый расчёт возраста: функция DATEDIF
Функция DATEDIF (от англ. Date Difference) — самый универсальный инструмент для вычисления разницы между двумя датами. Она скрыта в Excel (не отображается в мастер-функций), но работает во всех версиях, включая Excel 365 и Excel 2019. Синтаксис:
=DATEDIF(дата_начала; дата_конца; единица_измерения)
Где единица_измерения может принимать значения:
- 📅
"Y"— полные годы (игнорирует месяцы и дни) - 📆
"M"— полные месяцы (игнорирует дни) - 🕒
"D"— полные дни - 📊
"YM"— месяцы без учёта годов - 📈
"MD"— дни без учёта месяцев и годов - 🔢
"YD"— дни без учёта годов (с учётом месяцев)
Для расчёта возраста в годах используйте:
=DATEDIF(B2; TODAY(); "Y")
Где B2 — ячейка с датой рождения, а TODAY() — текущая дата. Если нужно учесть месяцы и дни (например, "23 года, 5 месяцев, 10 дней"), комбинируйте функции:
=DATEDIF(B2; TODAY(); "Y") & " лет, " & DATEDIF(B2; TODAY(); "YM") & " мес., " & DATEDIF(B2; TODAY(); "MD") & " дн."
2. Альтернативные формулы: YEARFRAC и комбинации функций
Функция YEARFRAC (от англ. Year Fraction) вычисляет дробную часть года между двумя датами. Она полезна, если нужно получить возраст в годах с точностью до десятых или сотых. Синтаксис:
=YEARFRAC(дата_начала; дата_конца; [базис])
Аргумент [базис] определяет метод расчёта (по умолчанию = 0):
- 📏
0или опущен — американский метод (NASD), 30/360 - 📐
1— фактический/фактический - 📌
2— фактический/360 - 📍
3— фактический/365 - 📎
4— европейский метод, 30/360
Пример для возраста в годах с одной цифрой после запятой:
=ROUND(YEARFRAC(B2; TODAY(); 1); 1)
Для целых лет можно использовать комбинацию функций YEAR, MONTH и DAY:
=YEAR(TODAY())-YEAR(B2)-IF(OR(MONTH(TODAY())
3. Автоматический расчёт с учётом текущей даты
Если вам нужно, чтобы возраст обновлялся автоматически при открытии файла, используйте функцию TODAY(). Она возвращает текущую дату и пересчитывается при каждом открытии книги или изменении ячеек. Примеры:
| Задача | Формула | Пример результата |
|---|---|---|
| Возраст в полных годах | =DATEDIF(B2; TODAY(); "Y") | 23 |
| Возраст в годах и месяцах | =DATEDIF(B2; TODAY(); "Y") & " г. " & DATEDIF(B2; TODAY(); "YM") & " мес." | 23 г. 5 мес. |
| Дни до следующего дня рождения | =DATE(YEAR(TODAY()); MONTH(B2); DAY(B2))-TODAY() | 120 |
| Возраст на конкретную дату | =DATEDIF(B2; "31.12.2026"; "Y") | 24 |
Важно: TODAY() не обновляется в реальном времени — только при пересчёте листа (например, после ввода данных или нажатия F9). Чтобы принудительно обновить все даты, используйте комбинацию Ctrl + Alt + F9.
Как зафиксировать текущую дату, чтобы она не менялась?
Используйте сочетание клавиш Ctrl + ; (точка с запятой) — это вставит в ячейку статическую дату, которая не будет обновляться.
4. Расчёт стажа работы или возраста объектов
Алгоритм для вычисления стажа работы или возраста оборудования идентичен расчёту возраста человека, но есть нюансы:
- 📅 Для стажа используйте дату приёма на работу (например,
01.07.2015). - 🏢 Для возраста здания/техники — дату ввода в эксплуатацию.
- ⚙️ Если нужно учитывать только рабочие дни (например, для гарантийного срока), используйте
NETWORKDAYS:
=NETWORKDAYS(B2; TODAY())
Пример для гарантийного срока: если гарантия действует 24 месяца с даты покупки (B2), формула проверки:
=IF(DATEDIF(B2; TODAY(); "M")<=24; "Гарантия действует"; "Гарантия истекла")
Ячейка с датой начала имеет формат "Дата"|Формула учитывает високосные годы|Для текущей даты используется TODAY()|Проверены граничные случаи (например, 29 февраля)
-->
5. Ошибки и их исправление
Даже опытные пользователи сталкиваются с ошибками при расчёте возраста. Вот самые распространённые:
⚠️ Внимание: Если формула возвращает#ЧИСЛО!, проверьте, что обе даты в формате "Дата". Часто пользователи вводят дату как текст (например,01.01.2000без преобразования в дату).
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? | Опечатка в названии функции | Проверьте регистр: DATEDIF, а не Datedif |
#ЗНАЧ! | Дата конца раньше даты начала | Поменяйте местами аргументы или исправьте даты |
| Некорректный возраст | Формат ячейки — "Общий" или "Текст" | Выделите ячейку → Формат ячеек → Дата |
| Возраст на 1 год больше | Не учтён месяц/день рождения | Используйте DATEDIF с параметром "Y" |
Критическая ошибка: если дата рождения введена как текст (например, скопирована из внешнего источника), Excel не распознаёт её как дату. Чтобы исправить, выделите ячейку → Данные → Текст по столбцам → Готово.
6. Продвинутые приёмы: условное форматирование и динамические отчёты
С помощью условного форматирования можно автоматически выделять ячейки с возрастом по заданным критериям. Например, чтобы подсветить сотрудников старше 50 лет:
- Выделите диапазон с возрастом.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Больше.... - Введите условие:
=$C2>50(гдеC2— первая ячейка с возрастом). - Выберите цвет заливки (например, красный).
Для динамических отчётов используйте сводные таблицы:
- 📊 Создайте таблицу с данными (ФИО, дата рождения, возраст).
- 🔍 Вставьте сводную таблицу (
Вставка → Сводная таблица). - 📈 Перетащите поле "Возраст" в область
Значенияи настройте группировку (например, по диапазонам: 18-25, 26-35 и т.д.).
7. Расчёт возраста в Google Таблицах
В Google Sheets формулы работают аналогично, но есть различия:
- 📱 Функция
DATEDIFдоступна, но может требовать ручного ввода (не подсказывается автозаполнением). - 🌐 Для текущей даты используйте
=TODAY()или=NOW()(включает время). - 🔄 Формулы обновляются автоматически при каждом изменении листа.
Пример для Google Таблиц:
=ARRAYFORMULA(IF(B2:B=""; ""; DATEDIF(B2:B; TODAY(); "Y") & " лет, " & DATEDIF(B2:B; TODAY(); "YM") & " мес."))
Эта формула обработает весь столбец B и вернёт возраст в формате "X лет, Y мес." для каждой заполненной ячейки.
FAQ: Частые вопросы по расчёту возраста в Excel
Как посчитать возраст, если дата рождения в формате "дд.мм.гггг" (текст)?
Используйте функцию ДАТАЗНАЧ (или DATEVALUE в английской версии), чтобы преобразовать текст в дату:
=DATEDIF(ДАТАЗНАЧ(B2); TODAY(); "Y")
Если дата в формате "дд-мм-гггг", замените разделители на точки через ПОДСТАВИТЬ:
=DATEDIF(ДАТАЗНАЧ(ПОДСТАВИТЬ(B2; "-"; ".")); TODAY(); "Y")
Можно ли посчитать возраст в Excel Online?
Да, Excel Online поддерживает все описанные функции (DATEDIF, TODAY, YEARFRAC). Однако некоторые возможности (например, условное форматирование) ограничены по сравнению с десктопной версией.
Как посчитать возраст на определённую дату в прошлом?
Замените TODAY() на фиксированную дату в формате ДАТА(год; месяц; день):
=DATEDIF(B2; ДАТА(2020; 12; 31); "Y")
Это вернёт возраст на 31 декабря 2020 года.
Почему функция DATEDIF даёт неверный результат для 29 февраля?
Функция DATEDIF корректно обрабатывает високосные годы, но если текущий год не високосный, а дата рождения — 29 февраля, Excel автоматически сдвигает дату на 28 февраля или 1 марта (в зависимости от версии). Чтобы избежать ошибок, используйте проверку:
=IF(DAY(B2)=29; IF(MONTH(B2)=2; IF(OR(YEAR(TODAY())=YEAR(B2); NOT(МОД(YEAR(TODAY()); 4)=0))); "Проверьте дату"; DATEDIF(B2; TODAY(); "Y")); DATEDIF(B2; TODAY(); "Y")))
Как посчитать средний возраст группы людей?
Сначала рассчитайте возраст каждого человека в отдельном столбце (например, C), затем используйте СРЗНАЧ:
=СРЗНАЧ(C2:C100)
Для медианного возраста используйте =МЕДИАНА(C2:C100).