Расчет возраста по году рождения — одна из самых востребованных задач в Microsoft Excel и Google Таблицах. Казалось бы, что может быть проще: вычесть год рождения из текущего года? Но на практике такой подход дает погрешности, если не учитывать месяц и день рождения. Например, человек, родившийся 30 декабря 2000 года, по состоянию на 1 января 2026 года еще не достиг 24 лет, хотя разница в годах составляет 24.
В этой статье вы найдете 5 проверенных способов рассчитать возраст с учетом всех нюансов: от базовых формул до автоматизированных решений с функцией ДАТАРАЗН. Мы разберем типичные ошибки (например, когда Excel возвращает отрицательное число), покажем, как обновить возраст автоматически при открытии файла, и даже научимся выводить возраст в формате "23 года, 5 месяцев, 10 дней". Готовы? Тогда приступим!
1. Простейший способ: вычитание годов с корректировкой
Если вам нужен быстрый результат без учета месяца и дня, можно воспользоваться самой простой формулой:
=ГОД(СЕГОДНЯ()) - ГОД(A2)
где A2 — ячейка с датой рождения. Однако этот метод дает погрешность ±1 год, если день рождения еще не наступил в текущем году. Например, для человека, родившегося 15 июля 1990 года, формула вернет 34 года уже 1 января 2026 года, хотя фактически ему еще 33.
Чтобы исправить это, добавьте проверку с функцией ЕСЛИ:
=ГОД(СЕГОДНЯ()) - ГОД(A2) - ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2)) > СЕГОДНЯ(); 1; 0)
Эта формула сравнивает текущую дату с датой рождения в этом году. Если день рождения еще не наступил — отнимает 1 год.
2. Точный расчет с функцией ДАТАРАЗН (DATEDIF)
Функция ДАТАРАЗН (или DATEDIF в английской версии) специально предназначена для вычисления разницы между датами. Она позволяет получить возраст в годах, месяцах или днях с высокой точностью. Синтаксис:
=ДАТАРАЗН(A2; СЕГОДНЯ(); "Y")
где:
- 📅
A2— ячейка с датой рождения; - 📅
СЕГОДНЯ()— текущая дата; - 🔤
"Y"— код для вывода полных лет (другие варианты:"M"— месяцы,"D"— дни).
Преимущество этого метода — автоматическое обновление возраста при открытии файла. Однако у ДАТАРАЗН есть особенность: она не документирована в справке Excel, поэтому ее имя не подсказывается при вводе. Введите функцию вручную или скопируйте из этой статьи.
Почему ДАТАРАЗН не видна в списке функций?
Функция ДАТАРАЗН была добавлена для совместимости с Lotus 1-2-3 и не включена в официальную документацию. Она работает во всех версиях Excel, но не отображается в мастере функций.
3. Учет месяца и дня рождения: полный возраст
Чтобы вывести возраст в формате "X лет, Y месяцев, Z дней", комбинируйте несколько функций ДАТАРАЗН:
=ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " лет, " & ДАТАРАЗН(A2;СЕГОДНЯ();"YM") & " мес., " & ДАТАРАЗН(A2;СЕГОДНЯ();"MD") & " дн."
Здесь:
- 🔢
"Y"— полные годы; - 📆
"YM"— месяцы с момента последнего дня рождения; - 📅
"MD"— дни с момента последнего месяца.
Обратите внимание: если дата рождения — 29 февраля, а текущий год не високосный, Excel автоматически сдвигает дату на 28 февраля или 1 марта. Это может исказить расчет дней. Чтобы избежать ошибки, используйте проверку:
=ЕСЛИ(ДЕНЬ(A2)=29; ЕСЛИ(МЕСЯЦ(A2)=2; "Уточните дату"; [формула выше]); [формула выше])
4. Автоматическое обновление возраста при открытии файла
По умолчанию Excel не пересчитывает формулы с СЕГОДНЯ() вручную. Чтобы возраст обновлялся при каждом открытии файла, выполните следующие шаги:
- Перейдите в
Файл → Параметры → Формулы. - В разделе Параметры вычислений выберите
Автоматически, кроме таблиц данных. - Нажмите
OKи сохраните файл.
Если вы используете Google Таблицы, формулы с TODAY() обновляются автоматически каждые 30 минут или при любом изменении в документе.
Ячейка с датой рождения имеет формат Дата|Формула возвращает целое число (без дробной части)|При изменении текущей даты (вручную через СЕГОДНЯ()+365) возраст увеличивается на 1|Проверены крайние случаи: 29 февраля, 31 декабря-->
5. Расчет возраста на определенную дату (не текущую)
Иногда требуется узнать, сколько человеку было лет на конкретную дату, например, на 1 января 2020 года. Замените СЕГОДНЯ() на фиксированную дату:
=ДАТАРАЗН(A2; ДАТА(2020;1;1); "Y")
Для динамического выбора даты:
- Создайте отдельную ячейку (например,
B2) с нужной датой. - Используйте формулу:
=ДАТАРАЗН(A2; B2; "Y").
Это полезно для:
- 📊 Аналитики возрастного состава сотрудников на отчетную дату;
- 🎓 Расчета возраста учеников на 1 сентября;
- 📅 Юридических документов, где важен возраст на момент события.
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с ошибками при расчете возраста. Вот самые распространенные:
| Ошибка | Причина | Решение |
|---|---|---|
Возвращается #ИМЯ? |
Опечатка в названии функции (например, ДАТРАЗН вместо ДАТАРАЗН) |
Проверьте синтаксис. Функция чувствительна к регистру в английской версии (DATEDIF) |
| Отрицательный возраст | Дата рождения позже текущей даты (например, 2050 год) | Добавьте проверку: =ЕСЛИ(A2>СЕГОДНЯ(); "Ошибка даты"; ДАТАРАЗН(A2;СЕГОДНЯ();"Y")) |
| Возраст не обновляется | Режим вычислений установлен в Вручную |
Переключите на Автоматически в Параметры → Формулы |
| Некорректный месяц для 29 февраля | Excel сдвигает дату на 28 февраля в невисокосные годы | Используйте условную проверку (см. раздел 3) |
⚠️ Внимание: Если вы импортируете даты рождения из внешних источников (например, 1C или SQL), убедитесь, что они распознаются как даты, а не как текст. Для проверки выделите ячейку и посмотрите формат в строке состояния. Текстовые даты (например, "01.01.2000") не будут корректно обрабатываться функциямиДАТАРАЗНилиГОД.
7. Продвинутые приемы: возраст в годах с десятичной дробью
В некоторых случаях требуется возраст с точностью до дня, выраженный в десятичных годах (например, 23.5 лет). Для этого используйте формулу:
=ДАТАРАЗН(A2; СЕГОДНЯ(); "Y") + (СЕГОДНЯ() - ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(A2); ДЕНЬ(A2))) / 365
Эта формула:
- Считает полные годы (
ДАТАРАЗН); - Вычисляет разницу в днях между текущей датой и днем рождения в этом году;
- Делит дни на 365, чтобы получить дробную часть.
Для более точного расчета (с учетом високосных лет) замените 365 на:
=365 + (ГОД(СЕГОДНЯ()) = ГОД(ДАТА(ГОД(СЕГОДНЯ()); 2; 29)))
Эта конструкция добавляет 1 день, если текущий год високосный.
8. Альтернативные методы: Power Query и VBA
Если вам нужно рассчитать возраст для тысяч строк или автоматизировать процесс, рассмотрите:
- 🔄 Power Query: Импортируйте данные, добавьте столбец с формулой
=Date.From(DateTime.LocalNow()) - [BirthDate], затем извлеките годы из результата. - 🤖 VBA: Создайте пользовательскую функцию:
Function Age(birthDate As Date) As IntegerAge = DateDiff("yyyy", birthDate, Date) - (DateSerial(Year(Date), Month(birthDate), Day(birthDate)) > Date)
End Function
Теперь в ячейке можно использовать
=Age(A2).
Эти методы полезны для:
- 📈 Обработки больших массивов данных (HR-отчеты, медицинские карты);
- 🔄 Регулярного обновления возраста без ручного пересчета;
- 📊 Интеграции с другими системами (например, 1C или SQL).
⚠️ Внимание: При использовании Power Query учитывайте, что даты в исходных данных должны быть в формате, распознаваемом Excel. Если даты импортируются как текст (например, "01-01-2000"), предварительно преобразуйте их с помощьюDate.FromилиDateTime.From.
FAQ: Частые вопросы о расчете возраста в Excel
🔹 Почему формула возвращает #ЗНАЧ! вместо возраста?
Эта ошибка возникает, если ячейка с датой рождения:
- Пустая;
- Содержит текст вместо даты (например, "01.01.2000" без формата
Дата); - Имеет некорректный формат (например, "2000/01/01" при региональных настройках, где разделитель — точка).
Решение: проверьте формат ячейки (Главная → Формат → Формат ячеек → Дата) и при необходимости преобразуйте текст в дату с помощью ДАТАЗНАЧ.
🔹 Как посчитать возраст в Google Таблицах?
В Google Sheets используйте те же формулы, но с английскими названиями функций:
=DATEDIF(A2; TODAY(); "Y")— полные годы;=YEAR(TODAY()) - YEAR(A2)— разница в годах (без учета месяца/дня).
Обратите внимание: в Google Таблицах функция TODAY() обновляется автоматически каждые 30 минут.
🔹 Можно ли рассчитать возраст без функции ДАТАРАЗН?
Да, используйте комбинацию функций:
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365)
Однако этот метод дает погрешность в високосные годы. Для точности замените 365 на:
=365,25
или используйте проверку на високосный год (см. раздел 7).
🔹 Как вывести возраст в формате "23 года 5 месяцев"?
Комбинируйте ДАТАРАЗН с текстом:
=ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " года " & ДАТАРАЗН(A2;СЕГОДНЯ();"YM") & " мес."
Для корректного склонения ("год", "года", "лет") используйте функцию ВЫБОР:
=ДАТАРАЗН(A2;СЕГОДНЯ();"Y") & " " & ВЫБОР(МОД(ДАТАРАЗН(A2;СЕГОДНЯ();"Y");100); "год"; "года"; "года"; "года"; "лет"; "лет"; "лет"; "лет"; "лет")
🔹 Почему возраст не обновляется при изменении даты рождения?
Вероятные причины:
- Режим вычислений установлен в
Вручную(см. раздел 4); - Формула использует абсолютные ссылки (например,
$A$2вместоA2); - Дата рождения введена как текст, а не как дата.
Решение: проверьте настройки вычислений и формат ячеек.