Как вычислить количество лет в Excel: от простых формул до сложных расчётов

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

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

Если вам нужно быстро посчитать возраст для одного человека — подойдёт простая формула. Если же вы работаете с базой данных на 10 000 строк (например, список сотрудников или клиентов), потребуются более продвинутые методы. Мы рассмотрим оба сценария, а также покажем, как визуализировать результаты с помощью условного форматирования.

Важно: все примеры в статье актуальны для Excel 2010–2026 и Excel 365. Для более старых версий (2007 и ранее) некоторые функции могут отсутствовать — об этом мы предупредим отдельно.

1. Базовый метод: вычитание годов с корректировкой

Самый простой способ посчитать возраст — вычесть год рождения из текущего года. Но здесь кроется подвох: если день рождения ещё не наступил в этом году, результат будет завышен на 1. Например, если сегодня 15.05.2026, а дата рождения 20.12.1990, простая формула =ГОД(СЕГОДНЯ())-ГОД(A2) даст 34 года, хотя на самом деле человеку ещё только 33.

Чтобы исправить это, нужно добавить проверку на месяц и день. Полная формула будет выглядеть так:

=ГОД(СЕГОДНЯ())-ГОД(A2)-ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A2); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A2))); 1; 0)

Разберём её по частям:

  • 📅 ГОД(СЕГОДНЯ())-ГОД(A2) — разница между текущим годом и годом рождения.
  • 🔍 ЕСЛИ(ИЛИ(...); 1; 0) — проверяет, наступил ли день рождения в этом году. Если нет — отнимает 1 от результата.
  • 📊 МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A2) — сравнивает месяцы (например, май vs декабрь).
  • 🎂 И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A2); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A2)) — проверяет день, если месяцы совпадают.

Этот метод работает безотказно, но выглядит громоздко. Если вам нужно посчитать возраст для сотен строк, лучше использовать специализированные функции.

📊 Как часто вы рассчитываете возраст в Excel?
Ежедневно
Раз в неделю
Редко
Никогда не делал этого

2. Функция РАЗНДАТ: быстро, но с подводными камнями

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

=РАЗНДАТ(дата_начала; дата_конца; единица_измерения)

Для вычисления полных лет используйте единицу измерения "y":

=РАЗНДАТ(A2; СЕГОДНЯ(); "y")

Например, для даты рождения 15.07.1985 и текущей даты 10.05.2026 функция вернёт 38 лет — даже если до дня рождения осталось 2 месяца. Это правильный результат, так как РАЗНДАТ учитывает только полные годы, игнорируя месяцы и дни.

Однако у функции есть серьёзные ограничения:

  • ⚠️ Она не документирована в официальной справке Excel (хотя и работает).
  • 🔢 Не поддерживает отрицательные даты (если дата конца раньше даты начала, вернёт ошибку #ЧИСЛО!).
  • 📅 В некоторых локализациях Excel (например, немецкой) может требовать точку с запятой вместо запятой в аргументах.
⚠️ Внимание: Если вы используете РАЗНДАТ в формулах массива или связываете её с другими функциями (например, ЕСЛИОШИБКА), тестируйте результат на крайних случаях — например, когда дата рождения 29 февраля.

Для надёжности комбинируйте РАЗНДАТ с проверкой на корректность дат:

=ЕСЛИОШИБКА(РАЗНДАТ(A2; СЕГОДНЯ(); "y"); "Некорректная дата")

Убедитесь, что ячейка с датой рождения имеет формат "Дата"

Проверьте, что текущая дата (СЕГОДНЯ()) позже даты рождения

Тестируйте формулу на датах с 29 февраля

Используйте ЕСЛИОШИБКА для обработки ошибок-->

3. ДАТАРАЗН: альтернатива для новых версий Excel

В Excel 365 и Excel 2021 появилась новая функция ДАТАРАЗН (DATEDIFF), которая лишена недостатков РАЗНДАТ. Она поддерживает больше единиц измерения и корректно обрабатывает отрицательные значения. Синтаксис:

=ДАТАРАЗН(дата_начала; дата_конца; единица; [метод_подсчёта]; [праздники])

Для расчёта полных лет используйте:

=ДАТАРАЗН(A2; СЕГОДНЯ(); "year")

Преимущества ДАТАРАЗН:

  • 📅 Работает с датами в любом порядке (автоматически определяет, какая дата раньше).
  • 🔧 Поддерживает дополнительные параметры, например, исключение праздников из расчёта.
  • 🌍 Корректно обрабатывает временные зоны и переходы на летнее время (если даты содержат время).

Однако в старых версиях Excel (2019 и ранее) этой функции нет. Если вы работаете в большой команде, где у коллег разные версии программы, лучше использовать универсальные методы (см. раздел 1 или 2).

Как включить ДАТАРАЗН в Excel 2019

В Excel 2019 функции ДАТАРАЗН нет в стандартном наборе, но её можно эмулировать с помощью Power Query или написать пользовательскую функцию на VBA. Для этого:

1. Нажмите Alt + F11, чтобы открыть редактор VBA.

2. Вставьте новый модуль (Insert → Module).

3. Скопируйте код функции DateDiff из официальной документации Microsoft.

4. Сохраните файл как .xlsm (с поддержкой макросов).

После этого функция станет доступна в вашей книге, но не будет работать на других компьютерах без макросов.

4. Расчёт возраста на определённую дату (не сегодня)

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

Пример: в ячейке A2 дата рождения (12.03.1995), а в B2 дата события (01.09.2020). Формула:

=РАЗНДАТ(A2; B2; "y")

Если дата события раньше даты рождения, Excel вернёт ошибку. Чтобы избежать этого, добавьте проверку:

=ЕСЛИ(B2

Для массовых расчётов (например, возраст сотрудников на дату приёма на работу) используйте абсолютные ссылки на ячейку с датой события. Например, если дата события в D1, формула будет:

=РАЗНДАТ(A2; $D$1; "y")

Это позволит протянуть формулу на весь столбец, не изменяя ссылку на дату события.

Дата рождения Дата события Формула Результат
15.06.1980 01.01.2020 =РАЗНДАТ(A2; B2; "y") 39
29.02.2000 01.03.2023 =РАЗНДАТ(A3; B3; "y") 23
31.12.1999 01.01.2000 =РАЗНДАТ(A4; B4; "y") 0

5. Автоматическое обновление возраста при изменении даты

Если вы работаете с динамическими данными (например, база клиентов, которая обновляется ежедневно), важно, чтобы возраст пересчитывался автоматически. Для этого:

  1. Используйте СЕГОДНЯ() вместо фиксированной даты.
  2. Настройте автоматический пересчёт формул в параметрах Excel:
    • Перейдите в Файл → Параметры → Формулы.
    • Выберите Автоматически в разделе Параметры вычислений.
  • Для больших файлов (более 10 000 строк) отключите автоматический пересчёт и обновляйте данные вручную (F9), чтобы избежать замедлений.
  • Если возраст нужно фиксировать на определённую дату (например, для отчёта), используйте специальную вставку:

    1. Выделите ячейки с формулами возраста.
    2. Скопируйте их (Ctrl + C).
    3. Выберите Главная → Вставить → Значения (или Ctrl + Alt + V → З).
    ⚠️ Внимание: При копировании формул с СЕГОДНЯ() в другую книгу Excel ссылка на текущую дату может сломаться. Чтобы этого избежать, используйте абсолютные ссылки или заменяйте СЕГОДНЯ() на фиксированную дату перед копированием.

    6. Визуализация возраста с помощью условного форматирования

    Чтобы быстро анализировать возрастные группы, настройте условное форматирование. Например, можно выделить цветом сотрудников старше 50 лет или клиентов младше 18.

    Инструкция:

    1. Выделите столбец с возрастом.
    2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Больше....
    3. Введите условие (например, >=50) и выберите цвет.
    4. Добавьте второе правило для другого диапазона (например, <18).
    5. Для более сложных условий (например, выделение возраста от 25 до 35 лет) используйте формулы в условном форматировании:

      =И(A2>=25; A2<=35)

      Пример визуализации:

      • 🟢 Зеленый: 18–25 лет
      • 🟡 Жёлтый: 26–40 лет
      • 🔴 Красный: 41+ лет
    =СЧЁТЕСЛИМН(B2:B100; ">="&30; B2:B100; "<="&40)

    -->

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

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

    Ошибка Причина Как исправить
    Возраст на 1 год больше реального Не учтён день рождения в текущем году Используйте РАЗНДАТ с единицей "y" или формулу с проверкой месяца/дня
    Ошибка #ЗНАЧ! в ячейке Ячейка с датой содержит текст или пуста Проверьте формат ячейки (Формат → Ячейки → Дата) или используйте ЕСЛИОШИБКА
    Некорректный результат для 29 февраля Excel неправильно обрабатывает високосные годы в некоторых функциях Замените 29.02 на 01.03 в ручном режиме или используйте ДАТАРАЗН

    Ещё одна частая проблема — кэширование дат. Если вы скопировали данные из внешнего источника (например, с сайта или другой программы), Excel может воспринимать даты как текст. Чтобы исправить это:

    1. Выделите проблемные ячейки.
    2. Нажмите Текст по столбцам на вкладке Данные.
    3. Выберите Формат данных → Дата и укажите правильный формат (например, ДМГ).

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

    Можно ли посчитать возраст с учётом месяцев и дней (например, 25 лет 3 месяца 10 дней)?

    Да, для этого используйте функцию РАЗНДАТ с разными единицами измерения:

    • Годы: =РАЗНДАТ(A2; СЕГОДНЯ(); "y")
    • Месяцы: =РАЗНДАТ(A2; СЕГОДНЯ(); "ym") (месяцы без учёта годов)
    • Дни: =РАЗНДАТ(A2; СЕГОДНЯ(); "md") (дни без учёта месяцев и годов)

    Чтобы объединить результаты в одну ячейку, используйте конкатенацию:

    =РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
    Почему функция РАЗНДАТ не работает в моём Excel?

    Вероятные причины:

    • Вы используете Excel для Mac — в некоторых версиях функция называется DATEDIF и требует ручного ввода.
    • Ячейки с датами имеют текстовый формат — преобразуйте их в формат Дата.
    • В вашей локализации Excel используется другой разделитель аргументов (например, точка с запятой вместо запятой).

    Попробуйте ввести функцию вручную: =РАЗНДАТ(A2;СЕГОДНЯ();"y") и нажмите Enter.

    Как посчитать возраст в Google Таблицах?

    В Google Sheets используйте те же функции, но с английским синтаксисом:

    • Для полных лет: =DATEDIF(A2; TODAY(); "y")
    • Для годов, месяцев и дней: =DATEDIF(A2; TODAY(); "y") & " years, " & DATEDIF(A2; TODAY(); "ym") & " months"

    Отличия от Excel:

    • Функция ДАТАРАЗН отсутствует (используйте DATEDIF).
    • Разделитель аргументов — всегда запятая (даже в российской локализации).
    Можно ли посчитать возраст без использования функций?

    Технически да, но это неудобно. Например, можно вручную вычитать годы и корректировать результат с учётом месяцев. Однако такой метод:

    • Занимает много времени.
    • Чреват ошибками (особенно при работе с большими массивами данных).
    • Не обновляется автоматически при изменении дат.

    Рекомендуем всегда использовать формулы — это надёжнее и быстрее.

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

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

    =СРЗНАЧ(B2:B100)

    Если в столбце есть пустые ячейки или ошибки, добавьте фильтрацию:

    =СРЗНАЧЕСЛИ(B2:B100; ">0")