Почему расчёт возраста в Excel — не такая простая задача, как кажется
На первый взгляд, вычисление количества лет между двумя датами в Microsoft Excel или Google Таблицах должно быть элементарной операцией. Однако любой, кто пытался сделать это вручную, сталкивался с неожиданными подводными камнями: ошибки из-за високосных годов, некорректное округление при вычитании дат, или ситуации, когда человек ещё не отметил день рождения в текущем году. Например, если сегодня 15 марта 2026 года, а дата рождения — 20 марта 1990 года, то фактический возраст человека ещё 33 года, а не 34.
В этой статье мы разберём 5 надёжных способов посчитать возраст в Excel — от простейших формул до универсальных решений, которые учитывают все нюансы календаря. Вы узнаете, как избежать типичных ошибок, почему функция РАЗНДАТ иногда даёт неверный результат, и как автоматизировать расчёты для больших таблиц с сотнями записей. А в конце — бонус: как вычислить возраст в годах, месяцах и днях одной формулой.
Способ 1: Простое вычитание дат (и почему оно не работает)
Самый очевидный подход — вычесть дату рождения из текущей даты и разделить результат на 365. Например:
= (СЕГОДНЯ() - A2) / 365
Где A2 — ячейка с датой рождения. Но этот метод даёт погрешность до 1 дня из-за високосных годов. Например, для человека, родившегося 29 февраля 1980 года, формула покажет неверный возраст в невисокосные годы. Кроме того, Excel хранит даты как числа (где 1 = 1 января 1900 года), и деление на 365 игнорирует месяцы и дни.
- ❌ Минусы: погрешность в високосные годы, не учитывает неполные годы.
- ⚠️ Когда использовать: только для приблизительных расчётов, где точность не критична.
Способ 2: Функция ГОД — точный расчёт без округлений
Более надёжный метод — использовать комбинацию функций ГОД и СЕГОДНЯ:
= ГОД(СЕГОДНЯ()) - ГОД(A2)
Но и здесь есть подвох: если день рождения ещё не наступил в текущем году, формула завысит возраст на 1. Например, для даты рождения 10 декабря 1995 года и сегодняшней даты 5 декабря 2026 года результат будет 29 лет, хотя фактически человеку ещё 28.
Чтобы исправить это, добавьте проверку с помощью функции ЕСЛИ:
= ГОД(СЕГОДНЯ()) - ГОД(A2) - ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(A2); ДЕНЬ(A2)) > СЕГОДНЯ(); 1; 0)
- ✅ Плюсы: учитывает неполные годы, работает с любыми датами.
- ⚠️ Нюанс: формула длинная, но её можно скрыть в отдельной колонке.
Способ 3: Функция РАЗНДАТ — универсальное решение
Функция РАЗНДАТ (или DATEDIF в английской версии) специально создана для вычисления разницы между датами. Её синтаксис:
= РАЗНДАТ(A2; СЕГОДНЯ(); "Y")
Где "Y" — код для расчёта полных лет. Однако у РАЗНДАТ есть две особенности:
- Скрытая функция: в новых версиях Excel её нет в списке мастер-функций, но она работает.
- Ошибки с отрицательными датами: если дата рождения позже текущей, вернёт
#ЧИСЛО!.
⚠️ Внимание: В Google Таблицах функцияРАЗНДАТработает иначе — там она называетсяDATEDIFи требует точного указания диапазона (например,"YM"для месяцев).
| Код | Значение | Пример результата |
|---|---|---|
"Y" |
Полные годы | 30 (если разница 30 лет и 5 месяцев) |
"M" |
Полные месяцы | 365 (30 лет и 5 месяцев) |
"D" |
Полные дни | 11015 |
"YM" |
Месяцы без учёта лет | 5 (из 30 лет и 5 месяцев) |
Убедитесь, что дата рождения в формате даты (не текст)|Проверьте, что текущая дата не раньше даты рождения|Используйте "Y" для лет, "YM" для месяцев|Для дней с учётом лет используйте "MD"-->
Способ 4: Комбинация ДАТАРАЗН и ЕСЛИ для сложных случаев
Если вам нужно учитывать не только годы, но и месяцы/дни (например, для медицинских карт или кадрового учёта), используйте вложенные функции:
= ЕСЛИ(РАЗНДАТ(A2; СЕГОДНЯ(); "Y") = 0;
РАЗНДАТ(A2; СЕГОДНЯ(); "M") & " мес.";
РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет, " &
РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " &
РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
)
Эта формула вернёт строку вида "30 лет, 5 месяцев, 15 дней". Обратите внимание на использование & для объединения текста и чисел.
Для упрощения можно разделить расчёт на три отдельные ячейки:
- ✅ Годы:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") - ✅ Месяцы:
=РАЗНДАТ(A2; СЕГОДНЯ(); "YM") - ✅ Дни:
=РАЗНДАТ(A2; СЕГОДНЯ(); "MD")
⚠️ Внимание: Если дата рождения введена как текст (например,"15.05.1990"вместо формата даты), Excel вернёт ошибку. Чтобы исправить, используйте=ДАТАЗНАЧ(A2).
Как проверить формат ячейки с датой?
Выделите ячейку → Правой кнопкой → Формат ячеек → Вкладка Число. Если выбран формат Дата, всё верно. Если Текстовый или Общий, используйте =ДАТАЗНАЧ() для преобразования.
Способ 5: Динамический возраст с учётом будущих дат
Если вам нужно рассчитать возраст на конкретную дату в будущем (например, для прогноза пенсионного возраста), замените СЕГОДНЯ() на фиксированную дату:
= РАЗНДАТ(A2; ДАТА(2030; 12; 31); "Y")
Эта формула покажет, сколько лет будет человеку на 31 декабря 2030 года. Для автоматизации можно создать отдельную ячейку с целевой датой и ссылаться на неё:
= РАЗНДАТ(A2; B2; "Y")
Где B2 — ячейка с датой, на которую нужно рассчитать возраст.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при расчёте возраста. Вот самые распространённые:
- Текст вместо даты: Если дата рождения введена как текст (например, скопирована из PDF), Excel не распознаёт её как дату. Решение: используйте
=ДАТАЗНАЧ(A2)или преобразуйте формат вручную. - Отрицательные даты: Если дата рождения позже текущей (например, при тестировании формул),
РАЗНДАТвернёт ошибку. Решение: добавьте проверку=ЕСЛИОШИБКА(РАЗНДАТ(...); "Дата в будущем"). - Неучтённые високосные годы: Простое деление на 365 даёт погрешность. Решение: используйте
РАЗНДАТилиГОД.
Чтобы проверить корректность формулы, сравните её результат с ручным расчётом для 2–3 дат, включая крайние случаи:
- 📅 Дата рождения 29 февраля (високосный год).
- 📅 Текущая дата 1 января (переход через год).
- 📅 Дата рождения 31 декабря (последний день года).
FAQ: Ответы на частые вопросы
Можно ли рассчитать возраст в Google Таблицах?
Да, все приведённые формулы работают и в Google Таблицах, за исключением названия функции РАЗНДАТ — там она называется DATEDIF. Также в Google Таблицах нет функции СЕГОДНЯ(), но есть её аналог — TODAY().
Как посчитать возраст в годах и месяцах без дней?
Используйте комбинацию:
= РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес."
Если месяцев 0, можно добавить проверку:
= ЕСЛИ(РАЗНДАТ(A2; СЕГОДНЯ(); "YM") = 0; РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет"; РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес.")
Почему Excel показывает возраст на 1 год больше?
Это происходит, если день рождения ещё не наступил в текущем году. Например, сегодня 10 мая 2026 года, а дата рождения — 15 мая 1990 года. Формула =ГОД(СЕГОДНЯ())-ГОД(A2) вернёт 34, хотя фактически человеку ещё 33. Используйте корректировку с ЕСЛИ, как в Способе 2.
Как автоматически обновлять возраст при открытии файла?
Функция СЕГОДНЯ() пересчитывается при каждом открытии файла или изменении данных. Если нужно фиксировать возраст на конкретную дату (например, на момент заполнения анкеты), замените СЕГОДНЯ() на фиксированную дату вручную или используйте макрос VBA для автоматической подстановки текущей даты при сохранении.
Можно ли рассчитать возраст в Excel Online?
Да, все описанные методы работают в Excel Online (веб-версия), за исключением некоторых функций VBA. Однако РАЗНДАТ может не отображаться в списке мастер-функций, но её можно ввести вручную — она будет работать.