Расчёт возраста по дате рождения в Microsoft Excel или Google Таблицах — одна из самых востребованных задач при работе с персональными данными.hether вы ведёте кадровый учёт, составляете списки учеников или анализируете демографические данные, автоматическое вычисление возраста сэкономит часы ручной работы. Однако многие пользователи сталкиваются с ошибками: формулы возвращают неверные значения, не учитывают текущий год или игнорируют месяцы. В этой статье разберём 5 проверенных способов рассчитать возраст — от простейших до универсальных, работающих даже с будущими датами.
Особенность вычислений в том, что возраст может определяться по-разному: в полных годах (без учёта месяцев), с точностью до дня или даже в формате "X лет Y месяцев Z дней". Мы покажем, как адаптировать формулы под каждый случай, а также раскроем скрытые нюансы функции РАЗНДАТ (DATEDIF), которую Excel не документирует, но которая остаётся самой надёжной для таких задач. В конце статьи вы найдёте готовые шаблоны для копирования и FAQ с ответами на типичные ошибки.
1. Базовый метод: функция ГОДСЕГОДНЯ и вычитание лет
Самый простой способ — вычесть год рождения из текущего года. Для этого используется комбинация функций ГОДСЕГОДНЯ() (TODAY) и ГОД() (YEAR). Формула выглядит так:
=ГОД(СЕГОДНЯ()) - ГОД(A2)
где A2 — ячейка с датой рождения. Например, если сегодня 15.05.2026, а в A2 указана дата 20.07.1990, формула вернёт 33.
Проблема этого метода: он не учитывает, наступил ли уже день рождения в текущем году. Если сегодня 15.05.2026, а день рождения 20.07.1990, человек ещё не отметил 34-летие, но формула покажет 34. Чтобы исправить это, добавьте проверку:
=ГОД(СЕГОДНЯ()) - ГОД(A2) - ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A2))); 1; 0)
- ✅ Плюсы: простая логика, работает во всех версиях Excel.
- ❌ Минусы: громоздкая формула, сложно читать и редактировать.
2. Секретная функция РАЗНДАТ (DATEDIF): почему её нет в справочнике
Функция РАЗНДАТ (DATEDIF) специально создана для вычисления разницы между датами в годах, месяцах или днях. Удивительно, но Microsoft не документирует её в официальной справке Excel (хотя она работает во всех версиях, включая Excel 365 и Excel 2019). Синтаксис:
=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "Y")
где "Y" — код для вычисления полных лет. Другие варианты:
- 📅
"M"— полные месяцы между датами. - 📆
"D"— полные дни. - 📅📆
"YM"— месяцы без учёта лет (например, разница между01.01.2020и15.03.2020вернёт2). - 📅📅📅
"MD"— дни без учёта месяцев и лет.
Пример: если в A2 дата 15.11.1985, а сегодня 10.05.2026, формула =РАЗНДАТ(A2; СЕГОДНЯ(); "Y") вернёт 38 (потому что день рождения ещё не наступил). Для точности до дня используйте:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
⚠️ Внимание: ФункцияРАЗНДАТне работает с датами до01.01.1900. Если вам нужно обработать исторические данные, используйте альтернативные методы (см. раздел 4).
3. Универсальная формула: учитываем день рождения в текущем году
Чтобы избежать ошибок с "ненаступившим днём рождения", используйте комбинацию функций ЕСЛИ, ДАТА и СЕГОДНЯ. Эта формула корректно определяет возраст даже если сегодняшняя дата раньше дня рождения:
=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); ГОД(СЕГОДНЯ())-ГОД(A2); ГОД(СЕГОДНЯ())-ГОД(A2)-1)
Разбор логики:
- Сравниваем месяцы: если текущий месяц больше месяца рождения, человек уже отметил день рождения.
- Если месяцы совпадают, сравниваем дни: если текущий день больше или равен дню рождения, возраст увеличивается.
- Во всех остальных случаях вычитаем
1из результата.
Эта формула работает и в Google Таблицах, и в Excel для Mac. Для наглядности создайте условное форматирование, чтобы выделять ячейки с "юбилейными" датами (например, красной заливкой для 18, 21, 50 лет и т.д.).
Убедитесь, что даты введены в формате ДД.ММ.ГГГГ|
Проверьте региональные настройки (в некоторых странах используется ММ/ДД/ГГГГ)|
Протестируйте формулу на 2-3 примерах с разными месяцами|
Сохраните резервную копию файла перед массовым применением-->
4. Расчёт возраста в годах, месяцах и днях (точный формат)
Если вам нужно получить возраст в формате "38 лет 5 месяцев 15 дней", используйте вложенные функции РАЗНДАТ:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
Для корректного отображения склонений ("год", "года", "лет") добавьте функцию ВЫБОР:
=РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " " & ВЫБОР(МОД(РАЗНДАТ(A2;СЕГОДНЯ();"Y");100);
1;"год";2;3;4;"года";0;"лет") & ", " &
РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " " & ВЫБОР(РАЗНДАТ(A2;СЕГОДНЯ();"YM");1;"месяц";2;3;4;"месяца";0;"месяцев") & ", " &
РАЗНДАТ(A2;СЕГОДНЯ();"MD") & " " & ВЫБОР(РАЗНДАТ(A2;СЕГОДНЯ();"MD");1;"день";2;3;4;"дня";0;"дней")
Пример результата: 38 лет, 5 месяцев, 15 дней.
| Дата рождения | Текущая дата | Формула | Результат |
|---|---|---|---|
| 15.11.1985 | 10.05.2026 | =РАЗНДАТ(A2;СЕГОДНЯ();"Y") |
38 |
| 29.02.2000 | 10.05.2026 | =РАЗНДАТ(A3;СЕГОДНЯ();"Y") |
24 |
| 01.01.2026 | 10.05.2026 | =РАЗНДАТ(A4;СЕГОДНЯ();"YM") |
4 |
| 30.04.2026 | 10.05.2026 | =РАЗНДАТ(A5;СЕГОДНЯ();"MD") |
10 |
⚠️ Внимание: При работе с високосными годами (например,29.02.2000) Excel может округлять дни. Чтобы избежать ошибок, используйте формат ячеекДатавместоОбщий.
5. Автоматическое обновление возраста при изменении даты
Если ваш файл будет использоваться долгое время, важно, чтобы возраст пересчитывался автоматически при открытии документа. Для этого:
- Убедитесь, что в формулах используется
СЕГОДНЯ(), а не фиксированная дата. - В настройках Excel включите
Автоматический пересчёт: перейдите вФормулы → Параметры вычислений → Автоматически. - Для Google Таблиц пересчёт происходит автоматически при каждом открытии файла.
Проблема: если файл открывается редко, данные могут устареть. Решение — добавить кнопку для принудительного пересчёта с помощью макроса:
Sub UpdateAges()
Application.CalculateFull
End Sub
Чтобы связать макрос с кнопкой:
- Перейдите на вкладку
Разработчик → Вставить → Кнопка. - Нарисуйте кнопку на листе и присвойте ей макрос
UpdateAges. - Подпишите кнопку, например, "Обновить возраст".
6. Обработка ошибок: что делать, если формула не работает
Даже с правильными формулами могут возникать ошибки. Рассмотрим типичные проблемы и решения:
- 🔴 #ЗНАЧ! — неверный формат даты. Проверьте, что ячейка отформатирована как
Дата, а неТекст. ИспользуйтеДАТАЗНАЧ()для преобразования:=РАЗНДАТ(ДАТАЗНАЧ(A2); СЕГОДНЯ(); "Y") - 🔴 #ИМЯ? — опечатка в названии функции. Убедитесь, что используете
РАЗНДАТ(а неRAZNDATилиДАТАРАЗН). - 🔴 Неправильный возраст — проверьте региональные настройки. В американском формате даты месяц и день меняются местами (
MM/DD/YYYYвместоDD.MM.YYYY).
Если даты хранятся как текст (например, импортированы из базы), используйте формулу для преобразования:
=ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;4;2); ЛЕВСИМВ(A2;2))
где A2 содержит текст вида "15.11.1985".
Как проверить формат ячейки?
Выделите ячейку с датой → нажмите Ctrl+1 (или правая кнопка → "Формат ячеек") → выберите категорию "Дата". Если текущий формат "Текст" или "Общий", измените его на "Дата".
7. Альтернативные способы: Power Query и VBA
Для обработки больших массивов данных (тысячи строк) удобнее использовать Power Query или VBA.
Способ 1: Power Query (Excel 2016 и новее):
- Импортируйте данные в Power Query:
Данные → Получить данные → Из таблицы/диапазона. - Добавьте столбец с текущей датой:
Добавить столбец → Пользовательскийс формулой=DateTime.LocalNow(). - Вычислите разницу в годах: добавьте ещё один столбец с формулой:
=Date.Year([Текущая дата]) - Date.Year([Дата рождения]) - (Date.From([Текущая дата]) < Date.From(Date.StartOfYear([Дата рождения])) ? 1 : 0)
Способ 2: VBA (для автоматизации):
Function CalculateAge(birthDate As Date) As Integer
CalculateAge = DateDiff("yyyy", birthDate, Date) - _
IIf(Format(Date, "mmdd") < Format(birthDate, "mmdd"), 1, 0)
End Function
Используйте в ячейке как =CalculateAge(A2).
FAQ: Ответы на частые вопросы
Почему функция РАЗНДАТ не показывает в справочнике Excel?
Функция РАЗНДАТ (DATEDIF) была добавлена для совместимости с Lotus 1-2-3 и никогда не документировалась Microsoft. Однако она работает во всех версиях Excel, включая Excel Online и Excel для Mac. Чтобы увидеть её синтаксис, начинайте вводить =РАЗНДАТ( — Excel подскажет аргументы.
Как посчитать возраст на конкретную дату (не сегодня)?
Замените СЕГОДНЯ() на фиксированную дату. Например, для расчёта возраста на 31.12.2023 используйте:
=РАЗНДАТ(A2; ДАТА(2023;12;31); "Y")
Можно ли рассчитать возраст в Google Таблицах?
Да, все приведённые формулы работают в Google Sheets, включая DATEDIF. Альтернатива — функция =YEAR(TODAY())-YEAR(A2) с проверкой на день рождения (аналогично разделу 3).
Как выделить цветом ячейки с возрастом старше 60 лет?
Используйте Условное форматирование:
- Выделите диапазон с возрастом.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Больше. - Укажите значение
60и выберите цвет заливки.
Почему возраст считается неправильно для дат до 1900 года?
Excel хранит даты как количество дней с 01.01.1900 (система дат 1900). Для исторических дат используйте альтернативные методы, например, разбор строки через ЛЕВСИМВ/ПРАВСИМВ или специализированные надстройки.