Расчёт возраста в Microsoft Excel — одна из самых востребованных задач при работе с персональными данными, кадровыми отчётами или медицинскими картами. На первый взгляд кажется, что достаточно вычесть дату рождения из текущей даты, но на практике всё сложнее: нужно учитывать месяцы, дни, високосные годы и даже региональные форматы дат. Ошибка в формуле может привести к неточным результатам — например, показать 25 лет вместо 26, если день рождения ещё не наступил в этом году.
В этой статье мы разберём 5 надёжных способов вычисления возраста — от простых арифметических операций до продвинутых функций вроде РАЗНДАТ (или DATEDIF в английской версии). Вы узнаете, как получить возраст в годах, месяцах и днях, как автоматически обновлять данные при изменении текущей даты, и почему иногда Excel показывает ошибку #ЧИСЛО!. Особое внимание уделим скрытым ловушкам формата ячеек, из-за которых даже правильная формула может давать сбой.
1. Базовый метод: вычитание дат и деление на 365
Самый простой способ — вычесть дату рождения из сегодняшней даты и разделить результат на 365. Например, если дата рождения в ячейке A2, формула будет такой:
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365)
Этот метод работает, но имеет критическую погрешность: он не учитывает високосные годы (в них 366 дней). Например, если человек родился 29 февраля 2000 года, формула покажет на 1 день меньше через 4 года. Для приблизительных расчётов сгодится, но для точных данных лучше использовать другие функции.
- ✅ Плюсы: простота, не требует специальных функций.
- ❌ Минусы: погрешность ±1 день из-за високосных лет.
- 🔹 Когда использовать: для быстрых прикидок, где точность до дня не важна.
⚠️ Внимание: Если в ячейке с датой рождения стоит текст (например, "01.01.1990" без формата даты), Excel вернёт ошибку. Проверьте формат ячейки: он должен бытьДата, а неТекст.
2. Функция РАЗНДАТ (DATEDIF): точный расчёт в годах, месяцах и днях
РАЗНДАТ (или DATEDIF в английской версии Excel) — это скрытая функция, которой нет в списке мастер-функций, но она работает во всех версиях Excel, включая Excel 365 и Excel 2019. Её синтаксис:
=РАЗНДАТ(дата_начала; дата_конца; единица_измерения)
Где единица_измерения может принимать значения:
"y"— полные годы;"m"— полные месяцы;"d"— дни;"ym"— месяцы без учёта лет;"yd"— дни без учёта лет;"md"— разница в днях без учёта месяцев и лет.
Пример: чтобы получить возраст в годах, месяцах и днях, используйте три отдельные функции:
=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
Результат будет выглядеть как строка: "25 лет, 3 мес., 15 дн.".
| Единица измерения | Пример формулы | Результат для даты рождения 15.05.1995 (на 20.10.2023) |
|---|---|---|
"y" |
=РАЗНДАТ(A2;СЕГОДНЯ();"y") |
28 |
"ym" |
=РАЗНДАТ(A2;СЕГОДНЯ();"ym") |
5 |
"md" |
=РАЗНДАТ(A2;СЕГОДНЯ();"md") |
5 |
"d" |
=РАЗНДАТ(A2;СЕГОДНЯ();"d") |
10050 |
⚠️ Внимание: Функция РАЗНДАТ не документирована в официальной справке Microsoft, но работает во всех версиях Excel. В Excel для Mac может потребоваться вводить её вручную — автозаполнение не сработает.
3. Функция ДАТАРАЗН: альтернатива для новых версий Excel
В Excel 365 и Excel 2021 появилась новая функция ДАТАРАЗН (DATEDIFF в английской версии), которая решает ту же задачу, но с более понятным синтаксисом:
=ДАТАРАЗН(дата_начала; дата_конца; единица)
Единицы измерения здесь указываются числом:
1— годы;2— месяцы;3— дни.
Пример для расчёта полных лет:
=ДАТАРАЗН(A2;СЕГОДНЯ();1)
Преимущество ДАТАРАЗН перед РАЗНДАТ — официальная поддержка Microsoft и автозаполнение в формулах. Однако в старых версиях Excel (до 2019) этой функции нет.
Убедитесь, что у вас Excel 365 или 2021|
Проверьте региональные настройки (функция может называться DATEDIFF)|
Преобразуйте текстовые даты в формат даты Excel|
Сравните результат с РАЗНДАТ для точности-->
4. Расчёт возраста на определённую дату (не сегодня)
Иногда нужно узнать возраст не на сегодня, а на конкретную дату — например, на дату приёма на работу или медицинского осмотра. В этом случае замените СЕГОДНЯ() на ячейку с нужной датой. Например, если дата события в B2, а дата рождения в A2:
=РАЗНДАТ(A2;B2;"y")
Если дата события в будущем (например, планируемая дата выхода на пенсию), формула вернёт отрицательное число. Чтобы избежать ошибок, добавьте проверку:
=ЕСЛИ(B2>A2; РАЗНДАТ(A2;B2;"y"); "Дата некорректна")
Для расчёта возраста на дату 31 декабря текущего года (полезно для отчётов) используйте:
=РАЗНДАТ(A2; ДАТА(ГОД(СЕГОДНЯ());12;31);"y")
5. Автоматическое обновление возраста при изменении даты
По умолчанию Excel не обновляет формулы в реальном времени — для этого нужно нажать F9 или изменить любую ячейку. Однако есть два способа заставить возраст обновляться автоматически:
- Использовать
СЕГОДНЯ(): Эта функция пересчитывается при каждом открытии файла или изменении данных. - Включить автоматический пересчёт: Перейдите в
Файл → Параметры → Формулыи выберитеАвтоматическив разделеПараметры вычислений.
Если вам нужно, чтобы возраст обновлялся каждую минуту (например, для дашборда), используйте VBA-макрос:
Private Sub Worksheet_Calculate()
Application.OnTime Now + TimeValue("00:01:00"), "UpdateAge"
End Sub
Sub UpdateAge()
ThisWorkbook.RefreshAll
End Sub
Этот код будет принудительно обновлять все формулы каждую минуту. Вставьте его в модуль листа (нажмите Alt + F11, найдите свой лист в VBAProject и вставьте код в окно).
⚠️ Внимание: Частый автоматический пересчёт может замедлить работу Excel, если в файле много формул. Используйте этот метод только при необходимости.
6. Распространённые ошибки и как их исправить
Даже опытные пользователи сталкиваются с ошибками при расчёте возраста. Вот самые частые проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ИМЯ? |
Опечатка в названии функции (например, "РАЗНДАТА" вместо "РАЗНДАТ") | Проверьте синтаксис. В английской версии Excel используйте DATEDIF. |
#ЧИСЛО! |
Дата рождения позже текущей даты | Добавьте проверку: =ЕСЛИ(A2>СЕГОДНЯ();"Ошибка";РАЗНДАТ(A2;СЕГОДНЯ();"y")) |
| Некорректный возраст (на 1 год меньше) | День рождения ещё не наступил в этом году | Используйте РАЗНДАТ с единицей "y" — она учитывает это автоматически. |
| Возраст в виде даты (например, "01.01.1900") | Ячейка отформатирована как дата, а не как число | Измените формат ячейки на Общий или Числовой. |
Ещё одна распространённая проблема — региональные настройки. Если в вашем Excel разделитель десятичных дробей — запятая, а в формуле используется точка, возникнет ошибка. Например, в русской версии Excel формула должна выглядеть так:
=РАЗНДАТ(A2;СЕГОДНЯ();"y")
А в английской:
=DATEDIF(A2,TODAY(),"y")
Почему РАЗНДАТ иногда показывает неверный возраст?
Функция РАЗНДАТ считает полные годы только если дата рождения уже прошла в текущем году. Например, если сегодня 10 января 2023, а день рождения 15 января 1990, функция вернёт 32 года, хотя фактически человеку ещё 32. Это не ошибка, а особенность логики Excel. Чтобы получить "округлённый" возраст (как принято в быту), добавьте условие:
=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); РАЗНДАТ(A2;СЕГОДНЯ();"y"); РАЗНДАТ(A2;СЕГОДНЯ();"y")-1)7. Продвинутые приёмы: возраст в текстовом формате и условное форматирование
Иногда возраст нужно представить не как число, а как текст — например, "25 лет и 3 месяца". Для этого комбинируйте функции РАЗНДАТ и ТЕКСТ:
=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет и " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " месяцев"
Чтобы автоматически склонять слово "год" (1 год, 2 года, 5 лет), используйте функцию ВЫБОР:
=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " " & ВЫБОР(МОД(РАЗНДАТ(A2;СЕГОДНЯ();"y");100);
"лет"; ВЫБОР(МОД(РАЗНДАТ(A2;СЕГОДНЯ();"y");10);1;"год";2:4;"года";"лет");
"лет")
Для визуального выделения возрастных групп (например, детей до 18 лет) используйте условное форматирование:
- Выделите ячейки с возрастом.
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - Установите условие:
Значение меньше 18и выберите цвет заливки (например, жёлтый).
FAQ: Частые вопросы о расчёте возраста в Excel
Как посчитать возраст, если дата рождения в текстовом формате (например, "1 января 1990")?
Используйте функцию ДАТАЗНАЧ, чтобы преобразовать текст в дату:
=РАЗНДАТ(ДАТАЗНАЧ("1 января 1990");СЕГОДНЯ();"y")
Если даты хранятся в ячейках в виде текста, примените ДАТАЗНАЧ к каждой ячейке или используйте Текст по столбцам (на вкладке Данные), чтобы разделить день, месяц и год.
Почему функция РАЗНДАТ не работает в Excel для Mac?
В некоторых версиях Excel для Mac функция РАЗНДАТ может не распознаваться из-за особенностей локализации. Попробуйте:
- Ввести функцию вручную (без автозаполнения).
- Использовать английскую версию:
=DATEDIF(A2,TODAY(),"y"). - Обновить Excel до последней версии.
Если ничего не помогает, замените РАЗНДАТ на комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ.
Как посчитать возраст в годах с учётом високосных лет?
Функция РАЗНДАТ автоматически учитывает високосные годы, поэтому никаких дополнительных действий не требуется. Если вы используете метод деления на 365, добавьте корректировку:
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)
Здесь 365,25 — среднее количество дней в году с учётом високосных (1 день каждые 4 года).
Можно ли рассчитать возраст в Google Таблицах?
Да, в Google Sheets используется тот же синтаксис, что и в Excel. Например:
=DATEDIF(A2;TODAY();"y")
Отличия:
- Функция
ДАТАРАЗНв Google Таблицах называетсяDATEDIFFи поддерживается официально. - Региональные настройки не влияют на названия функций (они всегда на английском).
Как посчитать средний возраст группы людей?
Если у вас список дат рождения в столбце A, используйте функцию СРЗНАЧ для столбца с возрастом:
=СРЗНАЧ(РАЗНДАТ(A2:A100;СЕГОДНЯ();"y"))
Важно: это массивая формула. В старых версиях Excel нажмите Ctrl + Shift + Enter, чтобы она сработала корректно. В Excel 365 и 2019 достаточно просто нажать Enter.