Как рассчитать возраст в Excel: 5 рабочих методов с формулами и примерами

Расчёт возраста в Microsoft Excel — задача, с которой сталкиваются кадровые специалисты, бухгалтеры, учителя и даже обычные пользователи при составлении семейных деревьев или планировании мероприятий. На первый взгляд кажется, что достаточно вычесть дату рождения из текущей даты, но на практике всё сложнее: нужно учитывать месяцы, дни, високосные годы и даже региональные форматы отображения дат. Ошибка в формуле может привести к тому, что человек "постареет" на год раньше времени или, наоборот, останется "вечно молодым" в ваших расчётах.

В этой статье мы разберём 5 надёжных способов вычисления возраста — от простейших арифметических операций до профессиональных функций вроде РАЗНДАТ (или DATEDIF в английской версии). Вы узнаете, как избежать типичных ошибок при работе с датами до 1900 года, как автоматически обновлять возраст при открытии файла, и почему иногда Excel "округляет" годы не в вашу пользу. А для тех, кто работает с большими массивами данных, мы подготовили таблицу сравнения методов по точности и скорости вычислений.

Если вы никогда раньше не работали с датами в Excel, не переживайте: все формулы подробно разобраны на реальных примерах. Для опытных пользователей — продвинутые приёмы с использованием ЕСЛИ, И и динамических массивов. В конце статьи — FAQ с ответами на самые частые вопросы, включая расчёт возраста "по состоянию на конкретную дату" (например, на 31.12.2023) и обработку пустых ячеек.

1. Простейший метод: вычитание дат с округлением

Самый интуитивный способ — вычесть дату рождения из текущей даты и разделить результат на 365. Например, если сегодня 15.05.2026, а дата рождения 20.07.1990, формула будет выглядеть так:

=ОКРУГЛВНИЗ((СЕГОДНЯ()-B2)/365;0)

Где B2 — ячейка с датой рождения. Функция ОКРУГЛВНИЗ гарантирует, что Excel не добавит лишний год, если день рождения ещё не наступил.

  • Плюсы: простота, работает во всех версиях Excel.
  • Минусы: не учитывает високосные годы (погрешность до 1 дня за 4 года).
  • 🔄 Альтернатива: замена 365 на 365,25 для учёта високосных лет.

Важно: Если дата рождения указана как текст (например, "20.07.1990" вместо формата даты), Excel вернёт ошибку. Чтобы исправить это, используйте функцию ДАТАЗНАЧ:

=ОКРУГЛВНИЗ((СЕГОДНЯ()-ДАТАЗНАЧ(B2))/365;0)

2. Функция РАЗНДАТ (DATEDIF): профессиональный подход

Функция РАЗНДАТ (или DATEDIF в английской версии Excel) специально создана для вычисления разницы между датами в годах, месяцах или днях. Её главный плюс — учёт календарных особенностей, включая високосные годы. Синтаксис:

=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "Y")

Где "Y" — код для вывода полных лет. Другие варианты:

  • "M" — полные месяцы между датами.
  • "D" — полные дни.
  • "YM" — месяцы без учёта лет (например, разница между 01.01.2020 и 15.03.2020 вернёт 2).
  • "MD" — дни без учёта месяцев и лет.
  • "YD" — дни с начала года (игнорируя годы).

Пример: Чтобы получить возраст в виде "25 лет, 3 месяца, 10 дней", комбинируем функции:

=РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " лет, " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " мес., " & РАЗНДАТ(B2;СЕГОДНЯ();"MD") & " дн."
Почему РАЗНДАТ не документирована в Excel?

Функция РАЗНДАТ унаследована из Lotus 1-2-3 и сохранена для совместимости. Microsoft не рекомендует её использовать в новых проектах, но она остаётся самой точной для расчёта возраста.

⚠️ Внимание: В Excel для Mac функция DATEDIF может возвращать ошибку #ИМЯ?, если регион системы настроен на русский язык. Решение: замените DATEDIF на РАЗНДАТ или измените язык интерфейса на английский.

3. Динамический возраст: автоматическое обновление при открытии файла

Если вам нужно, чтобы возраст пересчитывался каждый раз при открытии файла (например, для актуальных отчётов), используйте комбинацию СЕГОДНЯ() с функцией РАЗНДАТ. Однако есть нюанс: Excel по умолчанию не обновляет формулы с СЕГОДНЯ() вручную. Чтобыforced recalculation:

  1. Перейдите в Формулы → Вычисления → Параметры вычислений.
  2. Выберите Автоматически (если не стоит).
  3. Для принудительного пересчёта нажмите F9.

Продвинутый вариант: Если файл открывают разные пользователи с разными системными датами, используйте ТДАТА() (текущая дата и время) вместо СЕГОДНЯ():

=РАЗНДАТ(B2; ТДАТА(); "Y")
📊 Как часто вам нужно обновлять возраст в Excel?
Ежедневно
Еженедельно
Ежемесячно
Только при ручном открытии файла

4. Расчёт возраста на конкретную дату (не текущую)

Часто требуется узнать, сколько человеку было лет на определённую дату — например, на момент устройства на работу или получения права. Для этого замените СЕГОДНЯ() на фиксированную дату в формате ДАТА(год;месяц;день):

=РАЗНДАТ(B2; ДАТА(2020;5;15); "Y")

Пример: Узнаем возраст сотрудника на дату приёма на работу (15.03.2018):

=РАЗНДАТ(B2; ДАТА(2018;3;15); "Y") & " лет, " & РАЗНДАТ(B2; ДАТА(2018;3;15); "YM") & " мес."

Критическая особенность: Если дата в будущем (например, вы ошиблись и указали ДАТА(2026;1;1)), Excel вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА:

=ЕСЛИОШИБКА(РАЗНДАТ(B2; ДАТА(2026;1;1); "Y"); "Дата в будущем")

5. Расчёт стажа работы или срока службы

Алгоритм для стажа аналогичен расчёту возраста, но здесь важно учитывать неполные периоды. Например, если сотрудник проработал 5 лет и 11 месяцев, в отчёте может потребоваться указать "5 лет" (если округление в меньшую сторону) или "6 лет" (если в большую).

Формулы для разных сценариев:

ЦельФормулаПример результата
Точный стаж в годах и месяцах=РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " г. " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " мес."5 г. 11 мес.
Округление вверх (до полного года)=ОКРУГЛВВЕРХ(РАЗНДАТ(B2;СЕГОДНЯ();"Y")+РАЗНДАТ(B2;СЕГОДНЯ();"YM")/12;0)6
Округление вниз=РАЗНДАТ(B2;СЕГОДНЯ();"Y")5
Стаж в днях=РАЗНДАТ(B2;СЕГОДНЯ();"D")2190

Для кадровых отчётов часто требуется указать стаж в формате "X лет Y месяцев Z дней". Используйте:

=РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " л. " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " м. " & РАЗНДАТ(B2;СЕГОДНЯ();"MD") & " д."

Убедитесь, что дата приёма в формате "Дата"|Проверьте отсутствие текста в ячейках (например, "с 2018")|Используйте ЕСЛИ для обработки пустых ячеек|Сравните результат с календарём для тестовых дат-->

6. Типичные ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при работе с датами. Вот самые распространённые:

  1. Дата в текстовом формате: Если ячейка содержит "15.05.1990" (как текст), а не дату, формулы вернут ошибку. Решение: используйте ДАТАЗНАЧ или преобразуйте формат через Главная → Число → Дата.
  2. Региональные настройки: В американском Excel даты вводятся как MM/DD/YYYY, а в российском — DD.MM.YYYY. Если вы копируете файл между регионами, даты могут "сломаться". Решение: используйте ДАТА(год;месяц;день) для универсальности.
  3. Дата до 1900 года: Excel не поддерживает даты раньше 01.01.1900. Для исторических расчётов используйте альтернативные методы (например, ручной ввод разницы в годах).
  4. Отрицательный возраст: Если дата рождения позже текущей (опечатка), Excel вернёт ошибку. Решение: добавьте проверку ЕСЛИ:
=ЕСЛИ(B2>СЕГОДНЯ(); "Ошибка: дата в будущем"; РАЗНДАТ(B2;СЕГОДНЯ();"Y"))
⚠️ Внимание: При копировании формул с СЕГОДНЯ() в другие ячейки Excel автоматически не обновляет ссылки. Чтобы избежать ошибок, используйте абсолютные ссылки (например, $B$2) или именованные диапазоны.

FAQ: Ответы на частые вопросы

Как рассчитать возраст в Excel Online или Google Sheets?

В Excel Online и Google Sheets работают те же формулы, но:

  • В Google Sheets функция называется DATEDIF (даже в русской версии).
  • Функция СЕГОДНЯ() в онлайн-версиях обновляется при каждом открытии файла или изменении данных.

Пример для Google Sheets:

=DATEDIF(B2; TODAY(); "Y")
Можно ли рассчитать возраст без указания года (например, только по месяцу и дню)?

Да, но результат будет приблизительным. Например, чтобы узнать, сколько полных месяцев прошло с даты рождения в текущем году:

=РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(B2); ДЕНЬ(B2)); СЕГОДНЯ(); "M")

Эта формула создаёт дату в текущем году с тем же месяцем и днём, что и в ячейке B2, а затем считает разницу в месяцах.

Как посчитать средний возраст группы людей?

Используйте функцию СРЗНАЧ для столбца с возрастами. Например, если возрасты рассчитаны в диапазоне C2:C100:

=СРЗНАЧ(C2:C100)

Чтобы исключить пустые ячейки, добавьте ЕСЛИ:

=СРЗНАЧ(ЕСЛИ(C2:C100<>""; C2:C100))

Примечание: В Excel 365 это формула массива — подтверждайте её Ctrl+Shift+Enter в старых версиях.

Почему моя формула возвращает ###### вместо возраста?

Это означает, что столбец слишком узкий для отображения результата. Растяните его вручную или используйте Главная → Формат → Автоподбор ширины столбца.

Другие возможные причины:

  • Отрицательное значение (дата рождения в будущем).
  • Неправильный формат ячейки (например, "Текст" вместо "Общий").
Как рассчитать возраст в годах с десятичной точностью (например, 25.3 года)?

Используйте формулу:

=РАЗНДАТ(B2; СЕГОДНЯ(); "Y") + РАЗНДАТ(B2; СЕГОДНЯ(); "YM")/12

Этот метод учитывает месяцы как доли года. Например, 6 месяцев = 0.5 года.