Расчёт возраста в Microsoft Excel — задача, с которой сталкиваются HR-специалисты, бухгалтеры, медики и даже обычные пользователи при ведении семейного бюджета или планировании мероприятий. Казалось бы, что может быть проще: вычесть дату рождения из текущей даты? Но на практике всё усложняется необходимостью учитывать месяцы, дни, високосные годы и даже временные зоны. Ошибка в формуле может привести к неточным данным — например, человек будет "моложе" на год, если его день рождения ещё не наступил в текущем году.
В этой статье мы разберём все способы расчёта возраста в Excel — от базовых до продвинутых, с учётом особенностей разных версий программы (включая Excel 365 и Excel 2019). Вы узнаете, как избежать типичных ошибок, автоматизировать обновление возраста и даже визуализировать данные с помощью условного форматирования. А в конце вас ждёт FAQ с ответами на самые частые вопросы.
———
1. Базовый метод: вычитание дат и его подводные камни
Самый очевидный способ посчитать возраст — вычесть дату рождения из текущей даты. Например, если в ячейке A1 указана дата рождения 15.05.1990, а в B1 мы вводим формулу =ТДАТА()-A1, то получим количество дней между этими датами. Но такой подход имеет три критичных недостатка:
1. Результат в днях, а не в годах. Чтобы перевести дни в годы, придётся делить на 365 (или 365,25 с учётом високосных лет), но это даст дробное значение (например, 32,4 года), что не всегда удобно.
2. Игнорирование текущего месяца. Если сегодня 10.03.2026, а день рождения 15.03.1990, человек ещё не отметил юбилей, но формула покажет полные 34 года.
3. Проблемы с форматом ячеек. Excel может воспринять результат как дату, а не как количество лет, если не задать формат ячейки Общий или Числовой.
➡️ Вывод: этот метод подходит только для быстрых прикидок, но не для точных расчётов. Далее мы рассмотрим более надёжные альтернативы.
2. Функция РАЗНДАТ (DATEDIF): самый точный способ
Функция РАЗНДАТ (или DATEDIF в английской версии) специально создана для расчёта разницы между датами в годах, месяцах или днях. Её синтаксис:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Где единица_измерения может принимать значения:
- 📅
"y"— полные годы - 📆
"m"— полные месяцы - 🕒
"d"— дни - 📅📆
"ym"— месяцы без учёта лет - 📅🕒
"yd"— дни без учёта лет - 📆🕒
"md"— разница в днях без учёта месяцев и лет
Пример: Чтобы посчитать полный возраст в годах с учётом текущей даты, используйте:
=РАЗНДАТ(A1; ТДАТА(); "y")
Где A1 — ячейка с датой рождения, а ТДАТА() возвращает сегодняшнюю дату.
⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Excel, но работает во всех версиях программы. В Excel 365 её можно вводить вручную — автозаполнение не сработает.
Убедитесь, что дата рождения введена как дата (а не текст)|Проверьте формат ячейки с результатом (должен быть "Общий" или "Числовой")|Используйте ТДАТА() для автоматического обновления|Тестируйте формулу на крайних случаях (например, 29.02.2020)
-->
3. Комбинированный расчёт: годы, месяцы и дни
Часто требуется вывести возраст в формате "32 года, 5 месяцев, 10 дней". Для этого нужно соединить несколько функций РАЗНДАТ с разными единицами измерения. Формула будет такой:
=РАЗНДАТ(A1; ТДАТА(); "y") & " г., " & РАЗНДАТ(A1; ТДАТА(); "ym") & " мес., " & РАЗНДАТ(A1; ТДАТА(); "md") & " дн."
Разбор формулы:
- 🔢
РАЗНДАТ(A1; ТДАТА(); "y")— считает полные годы. - 📅
РАЗНДАТ(A1; ТДАТА(); "ym")— месяцы с учётом текущего года (например, если с даты рождения прошло 32 года и 5 месяцев, вернёт 5). - 🕘
РАЗНДАТ(A1; ТДАТА(); "md")— дни с учётом текущего месяца. - 🔗
& " текст "— оператор конкатенации (склеивания) текста.
⚠️ Внимание: Если дата рождения в будущем (ошибка ввода), формула вернёт #ЧИСЛО!. Чтобы избежать этого, добавьте проверку:
=ЕСЛИОШИБКА(РАЗНДАТ(A1; ТДАТА(); "y"); "Ошибка даты")
💡 Полезный совет: Если нужно вывести возраст в ячейках отдельно (годы, месяцы, дни в разных колонках), используйте три отдельные формулы РАЗНДАТ с разными единицами измерения.
4. Альтернативные методы: функции ГОД, МЕСЯЦ, ДЕНЬ
Если функция РАЗНДАТ по какой-то причине не подходит (например, в Google Sheets она работает иначе), можно использовать комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ. Формула для расчёта полных лет:
=ГОД(ТДАТА()) - ГОД(A1) - ЕСЛИ(ИЛИ(МЕСЯЦ(ТДАТА())<МЕСЯЦ(A1); И(МЕСЯЦ(ТДАТА())=МЕСЯЦ(A1); ДЕНЬ(ТДАТА())<ДЕНЬ(A1))); 1; 0)
Как это работает:
- Вычисляем разницу между текущим годом и годом рождения:
ГОД(ТДАТА()) - ГОД(A1). - Проверяем, проходил ли день рождения в текущем году:
- Если текущий месяц раньше месяца рождения (
МЕСЯЦ(ТДАТА())<МЕСЯЦ(A1)), вычитаем 1. - Если месяцы совпадают, но текущий день раньше дня рождения (
ДЕНЬ(ТДАТА())<ДЕНЬ(A1)), тоже вычитаем 1.
- Если текущий месяц раньше месяца рождения (
📌 Пример: Если сегодня 10.03.2026, а дата рождения 15.03.1990, формула вернёт 33 (потому что день рождения ещё не наступил).
Функция Почему формула с ГОД/МЕСЯЦ/ДЕНЬ медленнее РАЗНДАТ?
РАЗНДАТ оптимизирована для работы с датами и выполняет вычисления в один шаг. В то время как комбинация ГОД/МЕСЯЦ/ДЕНЬ требует нескольких операций (вычитание, сравнение, условный оператор), что увеличивает нагрузку на процессор при работе с большими массивами данных (например, 10 000 строк).
5. Автоматическое обновление возраста и условное форматирование
Чтобы возраст пересчитывался автоматически при открытии файла, используйте ТДАТА() — она всегда возвращает текущую дату. Если нужно зафиксировать возраст на определённую дату (например, на момент заполнения анкеты), замените ТДАТА() на конкретную дату в формате ДАТА(год; месяц; день), например:
=РАЗНДАТ(A1; ДАТА(2026; 3; 10); "y")
Условное форматирование поможет визуально выделить возрастные группы. Например, чтобы подсветить ячейки с возрастом младше 18 лет красным, а старше 60 — зелёным:
- Выделите диапазон с возрастом.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - Установите условие
Значение меньше 18и задайте красный цвет. - Повторите для возраста
больше 60с зелёным цветом. - 🔄 Используйте функцию
ДАТАЗНАЧ, чтобы преобразовать текст в дату:=ДАТАЗНАЧ(A1). - 📅 Или измените формат ячейки на
Датавручную. - 🌍 Установите правильный региональный формат в настройках Windows.
- 📌 Или используйте функцию
ДАТАдля явного указания порядка:=ДАТА(1990; 5; 15). - 🔢
РАЗНДАТ(A1; ТДАТА(); "y")— полные годы. - 📊
(ТДАТА() - ДАТА(ГОД(ТДАТА()); МЕСЯЦ(A1); ДЕНЬ(A1))) / 365— доля года от последнего дня рождения до сегодня. - 📛 Опечатка в названии функции (например,
РАЗНДАТАвместоРАЗНДАТ). - 🌍 Английская версия Excel — используйте
DATEDIFвместоРАЗНДАТ. - 🔄 Функция введена как текст (проверьте, нет ли перед формулой апострофа
').
📊 Таблица примеров условного форматирования:
| Условие | Формула | Цвет | Применение |
|---|---|---|---|
| Младше 18 лет | =B1<18 | Красный | Несовершеннолетние |
| 18–25 лет | =И(B1>=18; B1<=25) | Жёлтый | Молодые специалисты |
| 26–40 лет | =И(B1>=26; B1<=40) | Голубой | Основной состав |
| 41–60 лет | =И(B1>=41; B1<=60) | Оранжевый | Опытные сотрудники |
| Старше 60 лет | =B1>60 | Зелёный | Ветеранты |
6. Расчёт возраста на определённую дату (не текущую)
Иногда требуется узнать, сколько человеку было лет в конкретный день — например, на момент устройства на работу или получения права. Для этого замените ТДАТА() на фиксированную дату. Допустим, в ячейке C1 указана дата события (01.07.2020), а в A1 — дата рождения (15.05.1990). Формула:
=РАЗНДАТ(A1; C1; "y")
Пример из практики:
📌 HR-отдел может использовать эту формулу, чтобы проверить, соответствует ли возраст кандидата требованиям вакансии на момент трудоустройства.
📌 Медицинские учреждения рассчитывают возраст пациента на дату осмотра для корректного назначения лечения.
⚠️ Внимание: Если дата события раньше даты рождения, Excel вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, добавьте проверку:
=ЕСЛИ(C1
7. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при расчёте возраста. Вот самые распространённые из них и способы их решения:
🔴 Ошибка 1: Дата в формате текста
Если дата рождения введена как текст (например, "15.05.1990" вместо 15.05.1990), Excel не сможет её распознать. Решение:
🔴 Ошибка 2: Неучтённые високосные годы
Если использовать упрощённую формулу деления дней на 365, результат будет неточным. Решение: всегда используйте РАЗНДАТ или комбинацию ГОД/МЕСЯЦ/ДЕНЬ.
🔴 Ошибка 3: Разные форматы дат
Excel может воспринимать даты в формате дд.мм.гггг и мм/дд/гггг по-разному. Решение:
8. Продвинутые сценарии: возраст в годах с десятичными, средний возраст группы
Иногда требуется не целая часть возраста, а точная дробь (например, 32,5 лет для расчёта страховых тарифов). Для этого используйте формулу:
=РАЗНДАТ(A1; ТДАТА(); "y") + (ТДАТА() - ДАТА(ГОД(ТДАТА()); МЕСЯЦ(A1); ДЕНЬ(A1))) / 365
Где:
Расчёт среднего возраста группы:
Если у вас список дат рождения в столбце A (с A2 по A100), используйте:
=СРЗНАЧ(РАЗНДАТ(A2:A100; ТДАТА(); "y"))
⚠️ Внимание: Эта формула работает только в Excel 365 и Excel 2019 (как формула массива). В более старых версиях придётся добавлять вспомогательный столбец с возрастом каждого человека.
———
FAQ: Ответы на частые вопросы
🔹 Почему моя формула возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! означает, что Excel не распознаёт имя функции. Возможные причины:
🔹 Как посчитать возраст в месяцах для ребёнка?
Используйте функцию РАЗНДАТ с параметром "m":
=РАЗНДАТ(A1; ТДАТА(); "m")
Если нужно вывести возраст в формате "1 год 2 месяца", комбинируйте:
=РАЗНДАТ(A1; ТДАТА(); "y") & " г. " & РАЗНДАТ(A1; ТДАТА(); "ym") & " мес."
🔹 Можно ли посчитать возраст без функции РАЗНДАТ?
Да, используйте комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ, как описано в разделе 4. Или воспользуйтесь формулой:
=ЦЕЛОЕ((ТДАТА()-A1)/365,25)
Где 365,25 — среднее количество дней в году с учётом високосных.
🔹 Как автоматически обновлять возраст при открытии файла?
Excel не обновляет формулы с ТДАТА() вручную — они пересчитываются при каждом открытии файла или изменении данных. Если нужно принудительно обновить:
- Нажмите
F9(пересчёт всех формул в книге). - Или перейдите в
Формулы → Вычислить сейчас.
Для полной автоматизации используйте макрос Workbook_Open в VBA.
🔹 Почему возраст считается неправильно для 29 февраля?
Excel корректно обрабатывает дату 29.02 в високосные годы. Если человек родился 29.02.2020, то:
- 📅 В невисокосный год (например, 2023) Excel считает дату рождения как
28.02.2020. - 🔢 Формула
РАЗНДАТвернёт корректный возраст, но день рождения будет отмечен 28 февраля.
В Excel нет встроенного механизма для принудительного переноса даты на 1 марта в невисокосные годы — это нужно делать вручную или через VBA.