Расчёт возраста по дате рождения в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются HR-специалисты, медицинские работники, учителя и даже обычные пользователи при заполнении анкет или составлении семейных деревьев. На первый взгляд, всё просто: вычесть дату рождения из текущей даты. Но на практике возникают нюансы: как учесть високосные годы, избежать ошибок с отрицательными значениями или получить результат не в годах, а в месяцах или днях?
В этой статье мы разберём 5 рабочих способов посчитать возраст в Excel — от элементарных формул до продвинутых функций с учётом календарных особенностей. Вы узнаете, как автоматически обновлять возраст при открытии файла, почему иногда формулы возвращают ошибку #ЧИСЛО!, и как адаптировать расчёты для разных версий программы (включая Excel 365 и Excel 2019).
Все примеры снабжены скриншотами, готовыми формулами для копирования и таблицей сравнения методов — вы сможете выбрать оптимальный вариант под свою задачу.
1. Простейший способ: вычитание дат
Самый очевидный метод — вычесть дату рождения из сегодняшней даты. В Excel это делается с помощью функции СЕГОДНЯ() (или TODAY() в английской версии). Формула выглядит так:
=СЕГОДНЯ()-B2
где B2 — ячейка с датой рождения. Однако результат будет в днях, а не в годах. Чтобы преобразовать дни в полные годы, разделите результат на 365:
=ЦЕЛОЕ((СЕГОДНЯ()-B2)/365)
Этот способ работает, но имеет критическую ошибку: он не учитывает високосные годы (где 366 дней). Например, если человек родился 29 февраля, формула даст неверный результат в невисокосный год.
⚠️ Внимание: Деление на 365 без учёта високосных лет даёт погрешность до 1 дня на каждые 4 года. Для точных расчётов (например, в медицине или юриспруденции) этот метод не подходит.
- ✅ Плюсы: Простота, работает во всех версиях Excel.
- ❌ Минусы: Погрешность из-за високосных годов, не учитывает месяцы и дни.
- 📌 Когда использовать: Для приблизительных расчётов (например, сегментация клиентов по возрастным группам).
2. Точный расчёт с функцией ДАТАРАЗН() (DATEDIF)
Функция ДАТАРАЗН() (или DATEDIF в английской версии) специально создана для вычисления разницы между датами в годах, месяцах или днях. Её синтаксис:
=ДАТАРАЗН(дата_начала; дата_конца; единица_измерения)
Для расчёта возраста в полных годах используйте:
=ДАТАРАЗН(B2; СЕГОДНЯ(); "Y")
Где "Y" — это код для лет ("M" — месяцы, "D" — дни). Преимущество метода в том, что он автоматически учитывает високосные годы и корректно обрабатывает даты вроде 29 февраля.
| Единица измерения | Код | Пример результата |
|---|---|---|
| Полные годы | "Y" |
Для даты рождения 15.03.1990 и сегодня 10.03.2026 вернёт 34 (не 35, т.к. день рождения ещё не наступил). |
| Полные месяцы | "M" |
Для даты 15.03.1990 и сегодня 10.03.2026 вернёт 419 месяцев. |
| Дни | "D" |
Для даты 15.03.1990 и сегодня 10.03.2026 вернёт 12 784 дня. |
| Годы и месяцы | "YM" |
Для даты 15.03.1990 и сегодня 10.03.2026 вернёт 11 месяцев (разница между полными годами). |
Функция ДАТАРАЗН() не документирована в официальной справке Microsoft, но работает во всех версиях Excel с 2000 года. Её главный недостаток — не поддерживает отрицательные даты (если дата конца раньше даты начала, вернёт ошибку #ЧИСЛО!).
Убедитесь, что дата рождения в формате даты (не текст)|Проверьте, что сегодняшняя дата не раньше даты рождения|Используйте английскую версию функции (DATEDIF), если русская не работает|Для точности комбинируйте с функцией СЕГОДНЯ()-->
3. Расчёт возраста с учётом дней до следующего дня рождения
Часто требуется не просто узнать полные годы, а вывести возраст в формате "X лет, Y месяцев, Z дней". Для этого комбинируем несколько функций:
=ДАТАРАЗН(B2; СЕГОДНЯ(); "Y") & " лет, " & ДАТАРАЗН(B2; СЕГОДНЯ(); "YM") & " мес., " & ДАТАРАЗН(B2; СЕГОДНЯ(); "MD") & " дн."
Где:
"Y"— полные годы."YM"— месяцы с учётом полных лет."MD"— дни с учётом полных лет и месяцев.
Пример результата для даты рождения 15.05.1990 и сегодняшней даты 10.03.2026:
34 лет, 9 мес., 23 дн.
Этот метод удобен для медицинских карт, где важен точный возраст пациента, или для юридических документов, где требуется указание дней до совершеннолетия.
Почему ДАТАРАЗН с "MD" иногда возвращает неверные дни?
Функция ДАТАРАЗН() с параметром "MD" считает разницу в днях между текущей датой и датой рождения в этом году. Например, если сегодня 10 марта, а день рождения 15 мая, результат будет отрицательным (покажет дни до дня рождения). Чтобы исправить это, используйте формулу:
=ЕСЛИ(ДАТАРАЗН(B2;СЕГОДНЯ();"MD")<0; ДАТАРАЗН(B2;СЕГОДНЯ();"MD")+30; ДАТАРАЗН(B2;СЕГОДНЯ();"MD"))
4. Автоматическое обновление возраста при открытии файла
По умолчанию Excel не пересчитывает функции вроде СЕГОДНЯ() при каждом открытии файла. Чтобы возраст всегда был актуальным, выполните следующие шаги:
- Перейдите в
Файл → Параметры → Формулы. - В разделе "Параметры вычислений" выберите
Автоматически. - Убедитесь, что флажок
Пересчитывать книгу при сохраненииснят (иначе возраст будет фиксироваться при сохранении).
Если вы делитесь файлом с другими пользователями, добавьте предупреждение о необходимости включить автоматический пересчёт. Например, на отдельном листе создайте ячейку с текстом:
="Внимание! Для корректного отображения возраста включите автоматический пересчёт формул (Файл → Параметры → Формулы → Автоматически)."
Раз в день|Раз в неделю|Раз в месяц|Только при ручном открытии файла|Другой вариант-->
5. Расчёт возраста на определённую дату (не сегодня)
Иногда требуется узнать, сколько человеку было лет на конкретную дату в прошлом или будущем. Например, для исторических исследований или планирования событий. Замените СЕГОДНЯ() на фиксированную дату:
=ДАТАРАЗН(B2; ДАТА(2020;12;31); "Y")
Эта формула вернёт возраст на 31 декабря 2020 года. Чтобы сделать расчёт динамичным, поместите целевую дату в отдельную ячейку (например, C2) и ссылайтесь на неё:
=ДАТАРАЗН(B2; C2; "Y")
Такой подход полезен для:
- 📅 Исторических данных: расчёт возраста персонажей на момент событий.
- 🎓 Образовательных целей: определение возраста студентов на момент поступления.
- 📊 Аналитики: сегментация клиентов по возрасту на дату покупки.
⚠️ Внимание: Если целевая дата раньше даты рождения,ДАТАРАЗН()вернёт ошибку#ЧИСЛО!. Чтобы избежать этого, добавьте проверку:=ЕСЛИ(C2
6. Продвинутые методы: учёт временных зон и локальных форматов дат
При работе с международными данными могут возникнуть проблемы из-за разных форматов дат. Например, в США дата записывается как MM/DD/YYYY, а в Европе — DD/MM/YYYY. Если Excel неправильно интерпретирует дату рождения, используйте функцию ДАТАЗНАЧ() (или DATEVALUE()), чтобы привести текст к формату даты:
=ДАТАЗНАЧ(ПОДСТАВИТЬ(B2; "."; "/"))
Эта формула заменяет точки на слэши и преобразует текст в дату. Для учёта временных зон (если даты рождения приходят из разных стран) используйте комбинацию функций ДАТА() и ВРЕМЯ() с корректировкой на разницу в часах.
Пример: если дата рождения в ячейке B2 указана по UTC, а вам нужно привести её к московскому времени (+3 часа):
=ДАТАЗНАЧ(B2) + ВРЕМЯ(3;0;0)
Это актуально для:
- 🌍 Мультинациональных компаний: унификация дат рождения сотрудников из разных стран.
- ✈️ Авиаперевозок: расчёт возраста пассажиров по данным паспортов с разными временными зонами.
- 📱 Мобильных приложений: импорт данных из внешних источников с нестандартными форматами.
Частые ошибки и как их исправить
Даже опытные пользователи Excel сталкиваются с ошибками при расчёте возраста. Вот наиболее распространённые проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЧИСЛО! в ДАТАРАЗН() |
Дата конца раньше даты начала. | Добавьте проверку: =ЕСЛИ(СЕГОДНЯ() |
| Неверный возраст для 29 февраля | Формула не учитывает високосный год. | Используйте ДАТАРАЗН() вместо деления на 365. |
| Возраст не обновляется | Отключён автоматический пересчёт. | Включите в Параметры → Формулы → Автоматически. |
| Дата воспринимается как текст | Неверный формат ячейки. | Примените функцию ДАТАЗНАЧ() или измените формат на "Дата". |
Ещё одна типичная ошибка — использование функции РАЗНДАТ(). Такой функции в Excel не существует (её часто путают с ДАТАРАЗН()). Если вы видите #ИМЯ?, проверьте правильность названия функции.
Для диагностики ошибок используйте пошаговый расчёт формул:
- Выделите ячейку с ошибкой.
- Перейдите в
Формулы → Зависимости формул → Вычислить формулу. - Проверьте, на каком этапе возникает сбой.
FAQ: Ответы на популярные вопросы
Можно ли рассчитать возраст в Google Таблицах?
Да, все приведённые формулы работают и в Google Таблицах, включая DATEDIF(). Единственное отличие — функция TODAY() обновляется при каждом изменении листа (не только при открытии файла).
Как посчитать возраст в годах с десятичными (например, 25.5 лет)?
Используйте формулу:
=ДАТАРАЗН(B2; СЕГОДНЯ(); "Y") + (ДАТАРАЗН(B2; СЕГОДНЯ(); "YM") + ДАТАРАЗН(B2; СЕГОДНЯ(); "MD")/30)/12
Она преобразует месяцы и дни в доли года.
Почему Excel показывает дату как число (например, 44197 вместо 01.01.2021)?
Это внутренний формат хранения дат в Excel (количество дней с 1 января 1900 года). Чтобы исправить, выделите ячейку → Главная → Формат → Формат ячеек → Дата.
Как посчитать возраст для большого списка дат рождения?
Примените формулу ко всему столбцу:
- Введите формулу в первую ячейку (например,
C2). - Дважды кликните по правому нижнему углу ячейки (маркер автозаполнения), чтобы скопировать формулу до конца списка.
Для ускорения используйте таблицы Excel (Вставка → Таблица), которые автоматически протягивают формулы.
Можно ли рассчитать возраст с учётом только рабочих дней?
Да, но для этого потребуется комбинация функций ДАТАРАЗН() и ЧИСТРАБДНИ() (NETWORKDAYS). Пример:
=ЧИСТРАБДНИ(B2; СЕГОДНЯ())/260
где 260 — среднее количество рабочих дней в году (5 дней × 52 недели).