Расчёт возраста в Microsoft Excel или Google Таблицах — задача, с которой сталкиваются HR-специалисты, медицинские работники, учителя и даже обычные пользователи при ведении семейного бюджета или планировании мероприятий. Казалось бы, что может быть проще: вычесть дату рождения из текущей даты? Но на практике здесь кроются подводные камни: високосные годы, неполные месяцы, ошибки формата ячеек и даже региональные настройки Excel, которые могут искажать результат.
В этой статье вы найдёте 5 проверенных способов посчитать возраст — от простейших формул до универсальных решений, работающих в любых версиях Excel (включая Excel 365, Excel 2019 и Excel Online). Мы разберём, как избежать ошибки #ЧИСЛО!, почему функция РАЗНДАТ может не работать, и как автоматически обновлять возраст при открытии файла. А в конце — FAQ с ответами на частые вопросы и готовые шаблоны для скачивания.
1. Простейший способ: вычитание дат
Самый очевидный метод — вычесть дату рождения из текущей даты. Например, если в ячейке A2 указана дата рождения (15.05.1990), а в B2 нужно получить возраст в годах, формула будет такой:
=ГОД(СЕГОДНЯ())-ГОД(A2)
Но у этого способа есть критическая ошибка: он не учитывает, прошёл ли день рождения в текущем году. Например, если сегодня 10.01.2026, а день рождения 15.05.1990, формула вернёт 34, хотя человеку ещё только 33. Чтобы исправить это, добавьте проверку:
=ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())>МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A2))); ГОД(СЕГОДНЯ())-ГОД(A2); ГОД(СЕГОДНЯ())-ГОД(A2)-1)
⚠️ Внимание: Если в ячейке с датой рождения указан только год (например,1990вместо15.05.1990), Excel воспримет его как01.01.1990. Это приведёт к неверному расчёту для людей, родившихся во второй половине года.
- ✅ Плюсы: Простота, работает во всех версиях Excel.
- ❌ Минусы: Не учитывает високосные годы при расчёте в днях, требует ручной корректировки для точности.
2. Функция РАЗНДАТ (DATEDIF): универсальное решение
Функция РАЗНДАТ (или DATEDIF в английской версии) специально создана для расчёта разницы между датами. Она скрыта в списке функций Excel, но работает во всех версиях, включая Excel 2007. Синтаксис:
=РАЗНДАТ(дата_начала; дата_конца; единица_измерения)
Где единица_измерения может принимать значения:
"Y"— полные годы;"M"— полные месяцы;"D"— дни;"YM"— месяцы без учёта годов;"MD"— дни без учёта месяцев и годов;"YD"— дни без учёта годов (с учётом месяцев).
Пример для расчёта возраста в годах:
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y")
А так можно вывести возраст в формате "33 года, 2 месяца, 15 дней":
=РАЗНДАТ(A2; СЕГОДНЯ(); "Y") & " года, " & РАЗНДАТ(A2; СЕГОДНЯ(); "YM") & " мес., " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
⚠️ Внимание: В Google Таблицах функция DATEDIF работает, но может выдавать ошибку, если дата конца раньше даты начала. Всегда проверяйте порядок аргументов!
Убедиться, что дата рождения в формате даты (не текст)|Проверить региональные настройки (точка или запятая в формулах)|Использовать СЕГОДНЯ() для автоматического обновления|Тестировать формулу на крайних случаях (например, 29.02.2020)
-->
3. Формула ДАТАРАЗН (DATEDIFF) в Power Query
Если вам нужно рассчитать возраст для большого массива данных (например, для 10 000 сотрудников), удобнее использовать Power Query — инструмент для обработки данных в Excel. Он позволяет автоматизировать расчёты и избежать ошибок при копировании формул.
Алгоритм действий:
- Выделите таблицу с датами рождения.
- Перейдите на вкладку
Данные→Из таблицы/диапазона(в Excel 2016+). - В открывшемся редакторе Power Query добавьте новый столбец:
Добавить столбец→Настраиваемый столбец. - Введите формулу:
= Date.From(DateTime.LocalNow()) - [Дата рождения]где
[Дата рождения]— название вашего столбца. - Нажмите
ОКи загрузите данные обратно в Excel.
Результат будет в днях. Чтобы перевести его в годы, добавьте ещё один столбец с формулой:
= Number.RoundDown([Возраст в днях]/365.25; 0)
Важно: в Power Query используется точная разница в днях с учётом високосных годов (деление на 365.25), поэтому результат точнее, чем при простом делении на 365.
| Метод | Точность | Сложность | Подходит для больших данных |
|---|---|---|---|
| Вычитание дат | Низкая (ошибки на границах месяцев) | Просто | Нет |
| РАЗНДАТ (DATEDIF) | Высокая | Средне | Да (но медленно) |
| Power Query | Максимальная | Сложно | Да (оптимально) |
| VBA-скрипт | Высокая | Очень сложно | Да |
4. Автоматическое обновление возраста при открытии файла
Если вы ведёте базу данных (например, список сотрудников), возраст должен обновляться каждый раз при открытии файла. Для этого:
- Используйте функцию
СЕГОДНЯ()в формулах (она пересчитывается при каждом открытии). - Если нужно фиксировать возраст на определённую дату (например, на 1 января 2026 года), замените
СЕГОДНЯ()на"01.01.2026". - Для принудительного пересчёта нажмите
F9.
Пример формулы с фиксированной датой:
=РАЗНДАТ(A2; "01.01.2026"; "Y")
⚠️ Внимание: В Google Таблицах функцияTODAY()обновляется каждые 30 минут, а не при открытии файла. Для мгновенного пересчёта используйте комбинациюCtrl + Alt + Shift + F9.
5. Расчёт возраста в днях, месяцах и годах с учётом високосных лет
Для максимальной точности (например, в медицинских расчётах) важно учитывать високосные годы. Вот универсальная формула, которая выводит возраст в формате "X лет, Y месяцев, Z дней":
=ЕСЛИ(
РАЗНДАТ(A2;СЕГОДНЯ();"Y")=0;
"";
РАЗНДАТ(A2;СЕГОДНЯ();"Y") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")=1;"год";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"Y")<5;"года";"лет")) & ", "
) &
ЕСЛИ(
РАЗНДАТ(A2;СЕГОДНЯ();"YM")=0;
"";
РАЗНДАТ(A2;СЕГОДНЯ();"YM") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")=1;"месяц";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"YM")<5;"месяца";"месяцев")) & ", "
) &
РАЗНДАТ(A2;СЕГОДНЯ();"MD") & " " & ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"MD")=1;"день";ЕСЛИ(РАЗНДАТ(A2;СЕГОДНЯ();"MD")<5;"дня";"дней"))
Эта формула:
- Корректно склоняет слова ("год", "года", "лет");
- Пропускает нулевые значения (например, если месяцев 0, они не отобразятся);
- Учитывает високосные годы через функцию
РАЗНДАТ.
Почему 29 февраля — проблема для Excel?
Excel хранит даты как числа, где 1 = 01.01.1900. В високосном году (например, 2020) 29 февраля существует, но в невисокосном (2021) — нет. Если в ячейке указана дата 29.02.2020, а вы пытаетесь прибавить 1 год (=A2+365), Excel автоматически скорректирует её на 01.03.2021, что может исказить расчёты. Всегда используйте РАЗНДАТ или ДАТА() для работы с такими датами.
6. Ошибки и их решение
Даже в простых формулах Excel может выдавать ошибки. Вот самые частые проблемы и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
#ЧИСЛО! |
Дата рождения позже текущей даты | Проверьте порядок аргументов в РАЗНДАТ или используйте ЕСЛИОШИБКА |
#ЗНАЧ! |
Ячейка содержит текст вместо даты | Используйте ДАТАЗНАЧ() или измените формат ячейки |
| Неверный возраст (на 1 год больше/меньше) | Не учтён день рождения в текущем году | Добавьте проверку с ЕСЛИ (см. раздел 1) |
| Формула не обновляется | Отключён автоматический пересчёт | Включите в Формулы → Параметры вычислений → Автоматически |
Если вы работаете с Google Таблицами, обратите внимание на региональные настройки. Например, в российской версии разделителем аргументов функции является ;, а в американской — ,. Чтобы избежать ошибок, используйте универсальный синтаксис:
=DATEDIF(A2; TODAY(); "Y")
FAQ: Ответы на частые вопросы
Как посчитать возраст на конкретную дату (не сегодня)?
Замените СЕГОДНЯ() на фиксированную дату в формате "ДД.ММ.ГГГГ". Например, для расчёта возраста на 31 декабря 2023 года:
=РАЗНДАТ(A2; "31.12.2023"; "Y")
Почему Excel показывает возраст на 1 год меньше?
Скорее всего, сегодняшняя дата раньше дня рождения в текущем году. Например, если сегодня 10.01.2026, а день рождения 15.05.1990, человеку ещё не исполнилось 34. Используйте формулу с проверкой (см. раздел 1) или РАЗНДАТ.
Как посчитать возраст в месяцах для ребёнка до года?
Используйте РАЗНДАТ с аргументом "M":
=РАЗНДАТ(A2; СЕГОДНЯ(); "M")
Для вывода в формате "5 месяцев и 3 дня":
=РАЗНДАТ(A2; СЕГОДНЯ(); "M") & " мес. и " & РАЗНДАТ(A2; СЕГОДНЯ(); "MD") & " дн."
Можно ли автоматически раскрасить ячейки по возрасту (например, красным для >60 лет)?
Да, используйте условное форматирование:
- Выделите ячейки с возрастом.
- Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - Установите условие
"больше" 60и выберите красный цвет.
Как экспортировать таблицу с возрастами в PDF без потери форматирования?
Перед экспортом:
- Закрепите области (
Вид → Закрепить области), чтобы шапка таблицы оставалась видимой. - Установите параметры страницы (
Разметка страницы → Параметры страницы), чтобы данные не обрезались. - Сохраните как PDF через
Файл → Экспорт → Создать PDF/XPS.
В Google Таблицах используйте Файл → Скачать → PDF-документ.