Введение: почему расчёт возраста в Excel — не тривиальная задача
На первый взгляд, показать возраст в Microsoft Excel кажется простой операцией: вычесть дату рождения из текущей даты. Но на практике пользователи сталкиваются с массой нюансов: от некорректного отображения месяцев до ошибок при переходе через границу года. Например, если сегодня 15 марта 2026, а дата рождения — 20 марта 2000, то простая формула =ГОД(СЕГОДНЯ())-ГОД(A1) выдаст 24 года, хотя на самом деле человеку ещё только 23.
Проблема усложняется, когда нужно учитывать точные дни (например, для медицинских карт или страховых полисов), или когда даты хранятся в нестандартном формате (например, 20.05.1995 вместо 20-мая-1995). В этой статье мы разберём 7 рабочих методов — от элементарных до профессиональных, — а также типичные ошибки, которые портят результаты даже опытным пользователям.
1. Базовый метод: вычитание дат и функция DATEDIF
Самый надёжный способ посчитать возраст — использовать скрытую функцию DATEDIF (от англ. Date Difference). Она не отображается в списке функций Excel, но работает во всех версиях, начиная с Excel 2000. Синтаксис:
=DATEDIF(дата_рождения; сегодня; "Y")
Где "Y" — это код для вычисления полных лет. Например, для даты рождения в ячейке A2 формула будет:
=DATEDIF(A2; СЕГОДНЯ(); "Y")
Чтобы получить возраст в месяцах или днях, замените "Y" на:
- 📅
"M"— полные месяцы (без учёта лет) - 📆
"D"— полные дни (без учёта месяцев и лет) - 📊
"YM"— месяцы с учётом лет (например, 2 года и 3 месяца → вернёт 3) - 📈
"MD"— дни с учётом месяцев (например, 1 месяц и 15 дней → вернёт 15)
Пример комбинированной формулы для вывода возраста в формате "X лет, Y месяцев, Z дней":
=DATEDIF(A2;СЕГОДНЯ();"Y") & " лет, " & DATEDIF(A2;СЕГОДНЯ();"YM") & " мес., " & DATEDIF(A2;СЕГОДНЯ();"MD") & " дн."
2. Функция YEARFRAC: точный расчёт с дробными годами
Если вам нужен возраст в дробных годах (например, для научных расчётов или финансовых моделей), используйте функцию YEARFRAC. Она возвращает разницу между двумя датами в виде десятичной дроби. Синтаксис:
=YEARFRAC(дата_рождения; СЕГОДНЯ(); 1)
Третий аргумент (1) определяет метод расчёта:
- 🔢
0или опущен — американский метод (30/360) - 🔢
1— фактическое количество дней в месяце / фактическое количество дней в году - 🔢
3— европейский метод (30/360, но с поправками)
Пример: если дата рождения 15.06.1990, то формула вернёт примерно 33.75 (то есть 33 года и 9 месяцев). Чтобы преобразовать дробь в годы и месяцы, умножьте дробную часть на 12:
=ЦЕЛОЕ(YEARFRAC(A2;СЕГОДНЯ();1)) & " лет и " & ОКРУГЛ((YEARFRAC(A2;СЕГОДНЯ();1)-ЦЕЛОЕ(YEARFRAC(A2;СЕГОДНЯ();1)))*12;0) & " мес."
Почему YEARFRAC может давать неточности?
Функция учитывает високосные годы, но в некоторых методах (например, 0) округляет месяцы до 30 дней. Для медицинских или юридических документов лучше использовать DATEDIF или комбинацию функций.
3. Автоматическое обновление возраста с функцией ТЕКДАТА (SEGODNYA)
Чтобы возраст пересчитывался автоматически при открытии файла, используйте функцию СЕГОДНЯ() (или TODAY() в английской версии). Она возвращает текущую дату и обновляется при каждом пересчёте листа. Пример:
=DATEDIF(A2; СЕГОДНЯ(); "Y")
Важно: если вы отправляете файл кому-то другому, убедитесь, что у получателя правильные настройки даты в системе. Например, если ваш файл создан в формате ДД.ММ.ГГГГ, а у получателя стоит ММ/ДД/ГГГГ, Excel может неправильно интерпретировать даты (например, 05.06.1990 станет 6 мая вместо 5 июня).
Убедиться, что даты в ячейках отформатированы как Дата (а не текст)|
Проверить региональные настройки (Файл → Параметры → Язык → Региональные параметры)|
Использовать функцию ДАТАЗНАЧ для преобразования текста в дату (если нужно)|
Сохранить файл в формате .xlsx (а не .csv, где форматирование теряется)
-->
4. Расчёт возраста на конкретную дату (не сегодня)
Иногда нужно узнать, сколько человеку было лет на определённую дату — например, на момент получения права или заключения договора. Для этого замените СЕГОДНЯ() на фиксированную дату:
=DATEDIF(A2; "15.07.2020"; "Y")
Или ссылайтесь на ячейку с датой:
=DATEDIF(A2; B2; "Y")
Если дата указана в текстовом формате (например, "15 июля 2020"), сначала преобразуйте её в дату с помощью ДАТАЗНАЧ:
=DATEDIF(A2; ДАТАЗНАЧ(B2); "Y")
5. Ошибки и как их избежать
Даже опытные пользователи допускают ошибки при работе с датами в Excel. Вот самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? |
Опечатка в названии функции (например, DATADIF вместо DATEDIF) |
Проверьте синтаксис. Функция DATEDIF пишется без пробелов. |
#ЗНАЧ! |
Ячейка содержит текст вместо даты (например, "1990" вместо 15.05.1990) |
Используйте ДАТАЗНАЧ или отформатируйте ячейку как Дата. |
| Неверный возраст (на 1 год больше) | Формула не учитывает, что день рождения ещё не наступил | Используйте DATEDIF с кодом "Y", а не простое вычитание лет. |
Даты отображаются как числа (например, 44197) |
Excel хранит даты как количество дней с 1900 года |
Выделите ячейку → Формат ячеек → Дата. |
⚠️ Внимание: Если вы копируете даты из внешних источников (например, с сайтов или PDF), Excel может воспринимать их как текст. Чтобы исправить это, выделите ячейки и выберите Данные → Текст по столбцам → Готово (даже если разделителей нет).
6. Продвинутые приёмы: условное форматирование и динамические диаграммы
Excel позволяет визуализировать возраст с помощью условного форматирования или диаграмм. Например, можно выделить цветом ячейки с возрастом старше 18 лет:
- Выделите диапазон с возрастом.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу...и введите:
=DATEDIF(A2;СЕГОДНЯ();"Y")>=18
- Задайте формат (например, зелёный фон).
Для создания гистограммы распределения возрастов:
- Выделите столбец с возрастом.
- Перейдите в
Вставка → Гистограмма. - Настройте оси: по горизонтали — возрастные группы (например,
18-25,26-35), по вертикали — количество людей.
7. Альтернативы Excel: Google Sheets и Power Query
Если вы работаете в Google Таблицах, все описанные функции работают аналогично, за исключением:
- 📑 Функция
TODAY()пишется без скобок в некоторых локализациях. - 📑 Для преобразования текста в дату используйте
=DATEVALUE()(аналогДАТАЗНАЧ).
Для обработки больших массивов дат (например, в HR-отчётах) удобно использовать Power Query:
- Перейдите в
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query добавьте столбец с формулой:
=DateTime.LocalNow() - [Дата_рождения]
- Преобразуйте результат в годы с помощью
Duration.Daysи деления на365.
⚠️ Внимание: В Power Query даты обрабатываются как временные метки, поэтому для точного расчёта возраста в годах используйте функцию DateTime.Date, чтобы игнорировать время.
FAQ: Частые вопросы о расчёте возраста в Excel
Можно ли посчитать возраст в Excel Online?
Да, все функции (DATEDIF, YEARFRAC, TODAY) работают в Excel Online так же, как и в десктопной версии. Однако некоторые продвинутые инструменты (например, Power Query) могут быть ограничены.
Как посчитать возраст в годах и месяцах без DATEDIF?
Используйте комбинацию функций:
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365) & " лет и " & ЦЕЛОЕ(MOD(СЕГОДНЯ()-A2;365)/30) & " мес."
Обратите внимание: этот метод приблизительный (месяцы округляются до 30 дней).
Почему Excel показывает возраст на 4 года меньше?
Скорее всего, ваша дата рождения сохранена в формате XX век (например, 1990 вместо 2090). Проверьте формат ячейки: выделите её → Формат ячеек → Дата и выберите правильный тип (например, 14.03.1990).
Как посчитать возраст в днях с учётом високосных лет?
Просто вычтите дату рождения из текущей даты:
=СЕГОДНЯ()-A2
Excel автоматически учитывает високосные годы. Чтобы отформатировать результат как дни, выберите формат Общий или Числовой.
Можно ли автоматически обновлять возраст в закрытом файле?
Нет. Функция СЕГОДНЯ() пересчитывается только при открытии файла или принудительном обновлении (F9). Если вам нужно фиксировать возраст на определённую дату, используйте CTRL+C → Специальная вставка → Значения.