Microsoft Excel — это не только инструмент для работы с числами и графиками, но и мощный помощник в обработке дат. Расчёт возраста человека по дате рождения может понадобиться в самых разных сценариях: от кадрового учёта до составления семейных древо или анализа демографических данных. Однако многие пользователи сталкиваются с трудностями, когда пытаются вычислить возраст с учётом текущей даты, месяца рождения или даже времени суток.
В этой статье мы разберём 5 рабочих способов определения возраста в Excel — от простейших формул до автоматизированных решений с учётом високосных годов и точного количества дней. Вы узнаете, как избежать типичных ошибок (например, отрицательного возраста при будущей дате рождения), как округлять результаты и как сделать так, чтобы возраст обновлялся автоматически при открытии файла. А для тех, кто работает с большими массивами данных, мы подготовили оптимизированные решения с использованием функций TODAY, DATEDIF и даже Power Query.
1. Базовый метод: функция DATEDIF для расчёта полных лет
Функция DATEDIF (от англ. DATE DIFFerence) — это скрытая "жемчужина" Excel, которую не найдёшь в стандартном списке функций. Она позволяет вычислять разницу между двумя датами в годах, месяцах или днях. Для расчёта возраста в полных годах формула выглядит так:
=DATEDIF(дата_рождения; TODAY(); "Y")
Где:
- 📅
дата_рождения— ячейка с датой рождения (например,A2) - 🔄
TODAY()— текущая дата (обновляется автоматически) - 🔢
"Y"— параметр, указывающий, что нужно вернуть разницу в полных годах
Пример: если в ячейке A2 указана дата 15.05.1990, а сегодня 20.07.2026, формула вернёт 34 (полных года). Обратите внимание: даже если до дня рождения остался 1 день, функция вернёт возраст на последний пройденный день рождения.
2. Учёт месяца и дня рождения: точный возраст в годах, месяцах и днях
Часто требуется узнать не только количество полных лет, но и сколько месяцев/дней прошло с последнего дня рождения. Для этого комбинируем параметры функции DATEDIF:
=DATEDIF(A2; TODAY(); "Y") & " лет, " & DATEDIF(A2; TODAY(); "YM") & " мес., " & DATEDIF(A2; TODAY(); "MD") & " дн."
Расшифровка параметров:
- 📆
"Y"— полные годы - 📅
"YM"— месяцы с последнего дня рождения (исключая годы) - 🕒
"MD"— дни с последнего месяца (исключая годы и месяцы)
Пример результата: "34 лет, 2 мес., 5 дн.". Этот формат удобен для отчётов, где важна точность. Однако будьте осторожны: если дата рождения в будущем (например, опечатка в году), формула вернёт ошибку #ЧИСЛО!.
Что делать если дата рождения в будущем?
Если в ячейке с датой рождения указана дата позже текущей (например, 2050 год), формула DATEDIF вернёт ошибку. Чтобы избежать этого, оберните её в функцию IFERROR:
=IFERROR(DATEDIF(A2; TODAY(); "Y"); "Ошибка: будущая дата")
3. Автоматическое обновление возраста при открытии файла
По умолчанию Excel не пересчитывает формулы с TODAY() вручную — они обновляются только при открытии файла или принудительном пересчёте (F9). Если вам нужно, чтобы возраст всегда был актуальным, настройте автоматический пересчёт:
- Перейдите в
Файл → Параметры → Формулы. - В разделе
Параметры вычисленийвыберитеАвтоматически. - Нажмите
OK.
Теперь возраст будет обновляться при каждом изменении в книге. Важно: это может замедлить работу с большими файлами (более 10 000 строк), если в них много формул с TODAY().
4. Альтернативные методы: функции YEARFRAC и INT
Если DATEDIF кажется вам неудобной, можно использовать комбинацию функций YEARFRAC (доля года) и INT (целая часть числа):
=INT(YEARFRAC(A2; TODAY(); 1))
Параметр 1 в YEARFRAC указывает метод расчёта (фактическое количество дней в году). Этот способ даёт тот же результат, что и DATEDIF с параметром "Y", но некоторые пользователи считают его более наглядным.
Для вывода возраста в формате "XX лет XX мес." используйте:
=INT(YEARFRAC(A2; TODAY(); 1)) & " лет, " & ROUND(MOD(YEARFRAC(A2; TODAY(); 1); 1)*12; 0) & " мес."
Здесь MOD вычисляет остаток от деления (дробную часть года), а ROUND округляет месяцы до целого числа.
- Убедитесь, что дата рождения введена в формате даты (а не текста)
- Проверьте, что в настройках региональных параметров используется нужный формат даты (дд.мм.гггг или мм/дд/гггг)
- Используйте CTRL+; для быстрой вставки текущей даты в ячейку
-->
5. Расчёт возраста на определённую дату (не текущую)
Иногда нужно узнать, сколько человеку было лет на конкретную дату в прошлом или будущем. Например, для анализа "сколько было лет на момент поступления в вуз". Замените TODAY() на фиксированную дату:
=DATEDIF(A2; "31.12.2020"; "Y")
Или используйте ссылку на ячейку с датой:
=DATEDIF(A2; B2; "Y")
Где B2 — ячейка с датой, на которую нужно рассчитать возраст. Этот метод полезен для исторических исследований или ретроспективного анализа.
=DATEDIF(A2; DATE(YEAR(TODAY())+5; MONTH(TODAY()); DAY(TODAY())); "Y")
-->
6. Ошибки и их решения: почему формула не работает?
Даже в простых формулах могут возникать ошибки. Вот самые распространённые проблемы и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? |
Опечатка в названии функции | Проверьте регистр: DATEDIF, а не Datedif |
#ЗНАЧ! |
Ячейка содержит текст вместо даты | Преобразуйте текст в дату с помощью ДАТАЗНАЧ() или измените формат ячейки |
#ЧИСЛО! |
Дата рождения позже текущей даты | Используйте IFERROR или проверьте корректность даты |
| Некорректный возраст (например, 1 год вместо 30) | Неправильный формат даты (например, мм.дд.гггг вместо дд.мм.гггг) | Настройте формат ячейки через Формат ячеек → Дата |
Если возраст рассчитывается неверно, проверьте региональные настройки Excel. В американском формате дата записывается как мм/дд/гггг, а в европейском — дд.мм.гггг. Например, 05.06.1990 и 06.05.1990 — это разные даты!
⚠️ Внимание: Если вы работаете с датами до 1900 года, Excel может их некорректно обрабатывать. В этом случае используйте текстовый формат или специализированные надстройки.
7. Продвинутые техники: Power Query и пользовательские функции
Для обработки больших массивов данных (например, списков сотрудников с датами рождения) удобно использовать Power Query:
- Выделите таблицу с датами рождения.
- Перейдите в
Данные → Получение данных → Из таблицы/диапазона. - В редакторе Power Query добавьте столбец с формулой:
=Date.From(DateTime.LocalNow()) - [Дата рождения] - Преобразуйте результат в годы, месяцы или дни.
Для автоматизации можно создать пользовательскую функцию на VBA:
Function ВОЗРАСТ(датарожд As Date) As String
Dim годы As Integer, мес As Integer, дни As Integer
годы = DateDiff("yyyy", датарожд, Date)
мес = DateDiff("m", датарожд, Date) - годы * 12
дни = DateDiff("d", датарожд, Date) - годы 365 - мес 30
ВОЗРАСТ = годы & " лет, " & мес & " мес., " & дни & " дн."
End Function
После добавления этого кода в редактор VBA (Alt+F11) функцию можно использовать в Excel как =ВОЗРАСТ(A2).
⚠️ Внимание: Пользовательские функции VBA не работают в Excel Online и мобильных версиях. Также они могут блокироваться настройками безопасности (включите макросы в Файл → Параметры → Центр управления безопасностью).
FAQ: Частые вопросы по расчёту возраста в Excel
Можно ли рассчитать возраст без функции DATEDIF?
Да, используйте комбинацию функций YEAR, MONTH и DAY:
=YEAR(TODAY())-YEAR(A2)-IF(OR(MONTH(TODAY())
Эта формула учитывает, прошёл ли день рождения в текущем году.
Как посчитать возраст в днях?
Используйте простую разницу дат:
=TODAY()-A2
Результат будет в днях. Чтобы перевести в годы, разделите на 365 (или 365.25 для учёта високосных годов).
Почему возраст отображается в формате даты (например, 15.05.1990), а не числа?
Это происходит, если ячейка с результатом имеет формат Дата. Измените формат на Общий или Числовой:
- Выделите ячейку с формулой.
- Нажмите
CTRL+1(или правая кнопка →Формат ячеек). - Выберите формат
ЧисловойилиОбщий.
Как рассчитать возраст для нескольких человек одновременно?
Скопируйте формулу для одной ячейки, затем протяните маркер автозаполнения (маленький квадрат в правом нижнем углу ячейки) вниз по столбцу. Excel автоматически подстроит ссылки на ячейки (например, A2 станет A3, A4 и т.д.).
Можно ли сделать так, чтобы возраст обновлялся каждую секунду?
Нет, Excel не поддерживает обновление формул в реальном времени. Максимум — автоматический пересчёт при открытии файла или изменении данных. Для динамического отображения времени используйте Power Apps или Google Sheets с функцией NOW().