Расчет возраста в Microsoft Excel — задача, с которой сталкиваются HR-менеджеры, бухгалтеры, педагоги и даже обычные пользователи при составлении отчетов или личных планов. На первый взгляд кажется, что достаточно вычесть дату рождения из текущей даты, но на практике всё сложнее: нужно учитывать високосные годы, месяцы разной продолжительности и даже региональные форматы дат. Ошибка в формуле может привести к тому, что человек старше на год или моложе, чем есть на самом деле — а это критично для кадровых документов или статистики.
В этой статье мы разберем 5 рабочих способов посчитать возраст на любую дату — от простейших формул до универсальных решений, которые учитывают все нюансы календаря. Вы узнаете, как избежать типичных ошибок (например, отрицательного возраста при расчете на будущую дату), как адаптировать формулы для Google Таблиц, и почему функция ДАТАРАЗН не всегда дает точный результат. Все примеры протестированы в Excel 2010–2023 и Microsoft 365.
Если вам нужно быстро получить результат — используйте готовые шаблоны в конце статьи. Для глубокого понимания читайте дальше: мы разложим каждый метод "по полочкам", с пояснениями и скриншотами.
1. Простейший способ: вычитание дат с округлением
Самый очевидный (но не всегда точный) метод — вычесть дату рождения из целевой даты и разделить результат на 365. Формула выглядит так:
=ЦЕЛОЕ(([целевая_дата]-[дата_рождения])/365)
✅ Плюсы: простота, работает во всех версиях Excel.
❌ Минусы: игнорирует високосные годы (ошибка ±1 день за 4 года) и не учитывает месяцы/дни. Например, человек, родившийся 29 февраля, по этой формуле будет "молодеть" раз в 4 года.
Пример для ячейки A2 (дата рождения) и B2 (целевая дата):
=ЦЕЛОЕ((B2-A2)/365)
2. Точный расчет с функцией ДАТАРАЗН
Функция ДАТАРАЗН (DATEDIF) специально создана для вычисления разницы между датами в годах, месяцах или днях. Синтаксис:
=ДАТАРАЗН([дата_начальная]; [дата_конечная]; "Y")
где "Y" — код для расчета полных лет.
🔹 Особенности:
- 📅 Работает корректно с 29 февраля (считает его как 28 февраля в невисокосные годы).
- 🔄 Возвращает только полные годы — если до дня рождения осталось 10 месяцев, возраст не увеличится.
- ⚠️ В Excel 2007 и старше функция скрыта в мастере функций (придется вводить вручную).
Пример для расчета возраста на сегодня:
=ДАТАРАЗН(A2;СЕГОДНЯ();"Y")
⚠️ Внимание: Если целевая дата раньше даты рождения (например, расчет возраста ребенка на момент поступления в школу), функция вернет ошибку. Используйте проверку:=ЕСЛИ(B2
3. Универсальная формула с учетом месяца и дня
Чтобы получить возраст с точностью до дня, комбинируем ДАТАРАЗН с проверкой месяца и дня рождения:
=ДАТАРАЗН(A2;B2;"Y") + ЕСЛИ(ИЛИ(МЕСЯЦ(B2)>МЕСЯЦ(A2); И(МЕСЯЦ(B2)=МЕСЯЦ(A2); ДЕНЬ(B2)>=ДЕНЬ(A2))); 0; -1)
📌 Как это работает:
- Сначала считаем полные годы (
ДАТАРАЗН). - Потом проверяем, прошел ли день рождения в текущем году:
- Если целевой месяц > месяца рождения → день рождения еще не был.
- Если месяцы равны, но день целевой даты ≥ дня рождения → день рождения прошел.
💡 Пример: Человек родился 15.03.1990. На 10.03.2023 ему еще 32 года, а с 15.03.2023 станет 33. Формула это учтет.
4. Расчет возраста на конкретную дату (не сегодня)
Если нужно узнать возраст человека на произвольную дату (например, на 01.01.2020), замените СЕГОДНЯ() на ячейку с этой датой. Формула:
=ДАТАРАЗН(A2;C2;"Y")
где C2 — ячейка с целевой датой.
⚠️ Типичная ошибка: если целевая дата в формате текста (например, "01.01.2020"), Excel не распознает ее как дату. Проверьте формат ячейки:
- 📑 Выделите ячейку →
Формат ячеек→Дата. - 🔢 Или используйте
ДАТАЗНАЧдля преобразования:=ДАТАРАЗН(A2;ДАТАЗНАЧ(C2);"Y")
📊 Сравнение методов для даты рождения 29.02.2000 и целевой даты 01.03.2023:
| Метод | Формула | Результат | Комментарий |
|---|---|---|---|
| Вычитание/365 | =ЦЕЛОЕ((C2-A2)/365) | 23 | Ошибка: реально 23 года и 1 день |
| ДАТАРАЗН | =ДАТАРАЗН(A2;C2;"Y") | 23 | Корректно (29.02.2000 → 28.02.2023) |
| Универсальная | =ДАТАРАЗН(A2;C2;"Y") + ЕСЛИ(...) | 23 | Точно, но избыточно для этого случая |
5. Расчет возраста в Google Таблицах
В Google Sheets все формулы работают аналогично, но есть нюансы:
- 🌐 Функция
ДАТАРАЗНназываетсяDATEDIF(английская версия). - 📅 Для текущей даты используйте
TODAY()вместоСЕГОДНЯ(). - ⚠️ Формат даты по умолчанию зависит от языковых настроек аккаунта.
Пример для Google Таблиц:
=DATEDIF(A2; TODAY(); "Y")
🔄 Как изменить формат даты:
- Выделите ячейку →
Формат→Число→Дата. - Для ручного ввода используйте формат
ДД.ММ.ГГГГилиММ/ДД/ГГГГ(зависит от региона).
Почему в Google Таблицах возраст может отличаться на 1 день?
Это связано с временными зонами серверов Google. Если вы находитесь в часовом поясе UTC+3, а сервер использует UTC, дата может "сдвинуться" на ±1 день при расчетах через TODAY(). Решение: фиксируйте дату вручную (например, =ДАТА(2023;5;15)) для критичных вычислений.
6. Расчет возраста с учетом месяцев и дней
Иногда требуется не только количество полных лет, но и месяцев/дней. Для этого модифицируем ДАТАРАЗН:
=ДАТАРАЗН(A2;B2;"Y") & " лет, " & ДАТАРАЗН(A2;B2;"YM") & " мес., " & ДАТАРАЗН(A2;B2;"MD") & " дн."
📌 Расшифровка кодов:
"Y"— полные годы."YM"— месяцы без учета лет."MD"— дни без учета месяцев и лет.
💡 Пример вывода: "25 лет, 3 мес., 15 дн.".
⚠️ Внимание: Если целевая дата — день рождения (например, 15.05.2023 для даты рождения 15.05.1990), функцияДАТАРАЗНс кодом"MD"вернет 0, хотя фактически прошел 1 день. Чтобы исправить, добавьте +1:=ДАТАРАЗН(A2;B2;"MD") + 1
Ячейки с датами имеют формат "Дата"|Целевая дата не раньше даты рождения|Учтена разница в високосные годы (для 29.02)|Формула возвращает ожидаемый результат на тестовых данных-->
Готовые шаблоны для быстрого расчета
Скопируйте формулы в свою таблицу, заменив A2 и B2 на свои ячейки:
| Задача | Формула для Excel | Формула для Google Таблиц |
|---|---|---|
| Возраст на сегодня | =ДАТАРАЗН(A2;СЕГОДНЯ();"Y") | =DATEDIF(A2; TODAY(); "Y") |
| Возраст на конкретную дату (в ячейке C2) | =ДАТАРАЗН(A2;C2;"Y") | =DATEDIF(A2; C2; "Y") |
| Возраст с месяцами и днями | =ДАТАРАЗН(A2;B2;"Y")&" г. "&ДАТАРАЗН(A2;B2;"YM")&" м. " | =DATEDIF(A2;B2;"Y")&" y. "&DATEDIF(A2;B2;"YM")&" m. " |
| Проверка на день рождения | =ЕСЛИ(И(МЕСЯЦ(B2)=МЕСЯЦ(A2);ДЕНЬ(B2)=ДЕНЬ(A2));"🎉 День рождения!";"") | =IF(AND(MONTH(B2)=MONTH(A2);DAY(B2)=DAY(A2));"🎉 Birthday!";"") |
🔹 Совет: Для массового расчета (например, для списка сотрудников) протяните формулу вниз, ухватившись за правый нижний угол ячейки.
Частые вопросы (FAQ)
🔹 Почему формула возвращает отрицательный возраст?
Это происходит, если целевая дата раньше даты рождения. Например, расчет возраста ребенка на дату его рождения (целевая дата = дата рождения). Решение: добавьте проверку:
=ЕСЛИ(B2
🔹 Как посчитать возраст в годах с десятичной частью (например, 25.5 лет)?
Используйте формулу:
=РАЗНДАТ(A2;B2;"Y") + (РАЗНДАТ(A2;B2;"YD") / 365)
где "YD" — количество дней без учета лет. Для точности замените 365 на 365,25 (учитывает високосные годы).
🔹 Можно ли рассчитать возраст без функции ДАТАРАЗН?
Да, но формула будет сложнее:
=ЦЕЛОЕ((ГОД(B2)-ГОД(A2)) - (ДАТА(ГОД(B2);МЕСЯЦ(A2);ДЕНЬ(A2)) > B2))
Эта формула учитывает, прошел ли день рождения в текущем году.
🔹 Почему в Excel 2016 и 2019 разные результаты?
В Excel 2016 и новее исправлены ошибки обработки даты 29.02 в невисокосные годы. Если вам важна обратная совместимость, используйте универсальную формулу из раздела 3.
🔹 Как автоматически обновлять возраст при изменении даты?
Используйте СЕГОДНЯ() или TODAY() — эти функции пересчитываются при каждом открытии файла. Чтобы обновление происходило чаще:
- Перейдите в
Формулы → Параметры вычислений. - Выберите
Автоматически(обновление при любом изменении в книге).