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

Зачем считать годы в Excel и какие ошибки подстерегают новичков

Расчёт разницы в годах между двумя датами в Microsoft Excel или Google Таблицах кажется простой задачей — пока не сталкиваешься с подводными камнями. Например, если человек родился 29 февраля 2000 года, а сегодня 1 марта 2026 года, сколько ему полных лет? Ответ зависит от того, как именно вы зададите формулу. Обычное вычитание дат здесь не сработает: 2026-2000=24, но фактически прошло только 23 года и 2 дня.

В бизнес-задачах ошибки в таких расчётах чреваты искажением отчётности. Представьте, что вы анализируете срок службы оборудования: если неправильно посчитать возраст станка, можно пропустить плановое ТО или, наоборот, заменить ещё рабочий агрегат. А в HR-аналитике неточности в стаже сотрудников исказят данные о текучке кадров. Поэтому важно не просто знать формулы, но и понимать их логику.

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

Способ 1: Простое вычитание годов (и почему это опасно)

Самый очевидный метод — вычесть год из одной даты из года другой. Формула выглядит так:

=ГОД(конечная_дата) - ГОД(начальная_дата)

Например, для дат 01.01.2020 и 01.01.2023 результат будет 3. Но этот способ работает только если обе даты приходятся на один и тот же день месяца. Если же сравнивать 31.12.2020 и 01.01.2023, формула всё равно вернёт 3, хотя фактически прошло всего 2 года и 1 день.

⚠️ Внимание: Если в вашей таблице есть даты с 29 февраля (високосный год), простое вычитание годов даст ошибку в любом случае. Например, для 29.02.2020 и 01.03.2023 формула покажет 3 года, хотя полных лет всего 2.
  • ✅ Подходит для быстрых прикидок, когда точности не требуется.
  • ✅ Простота — не нужно запоминать сложные функции.
  • ❌ Ошибается при разных днях месяца или в високосные годы.
  • ❌ Не учитывает неполные годы (например, 1 год и 11 месяцев отобразится как 1 год).
📊 Какой способ расчёта лет вы используете чаще?
Простое вычитание годов
Функция DATEDIF/РАЗНДАТ
Формула с YEARFRAC
Другие функции
Не знаю, как это делать

Способ 2: Функция DATEDIF (РАЗНДАТ) — универсальный инструмент

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

=РАЗНДАТ(начальная_дата; конечная_дата; "Y")

Где "Y" — это код для вычисления полных лет. Например:

=РАЗНДАТ("15.05.1990"; "10.03.2026"; "Y")

Вернёт 33, потому что на 10 марта 2026 года человеку, родившемуся 15 мая 1990, ещё не исполнилось 34.

Преимущество РАЗНДАТ в том, что она автоматически учитывает дни и месяцы. Если конечная дата раньше начальной, функция вернёт ошибку #ЧИСЛО! — это удобно для проверки корректности данных.

Код единицы Что возвращает Пример результата для дат
01.01.2020 и 15.06.2023
"Y" Полные годы 3
"M" Полные месяцы (без учёта лет) 39
"D" Полные дни (без учёта месяцев и лет) 1256
"YM" Месяцы с учётом полных лет 5
"MD" Дни с учётом полных месяцев и лет 14
⚠️ Внимание: В Google Таблицах функция DATEDIF работает, но не документирована — её могут убрать в будущих обновлениях. Для надёжности дублируйте расчёты альтернативными формулами.

Убедитесь, что обе даты введены как даты (не текст)

Проверьте порядок аргументов: сначала начальная дата, потом конечная

Используйте код "Y" для полных лет

Для точности добавьте проверку на ошибки с IFERROR-->

Способ 3: YEARFRAC — для точного расчёта с дробными годами

Если вам нужна не только целая часть лет, но и дробная (например, для расчёта амортизации или стажа в годах с десятичными), используйте функцию YEARFRAC (в русскоязычной версии — ДОЛЯГОДА). Её синтаксис:

=ДОЛЯГОДА(начальная_дата; конечная_дата; [базис])

Необязательный параметр [базис] определяет, как считать дни в году:

  • 0 или опущен — американский метод (30/360)
  • 1 — фактический/фактический
  • 2 — фактический/360
  • 3 — фактический/365
  • 4 — европейский метод (30/360)

Пример: для дат 15.03.2020 и 10.06.2023 формула =ДОЛЯГОДА("15.03.2020"; "10.06.2023"; 1) вернёт примерно 3,24 (3 года и 0,24 года).

Критическая особенность: YEARFRAC может давать разные результаты в зависимости от базиса. Например, для дат 29.02.2020 и 28.02.2021 базис 1 покажет 1 год, а базис 3 — 0,997 года. Всегда уточняйте, какой метод расчёта требуется в вашей задаче.

Способ 4: Комбинация функций для гибких расчётов

Иногда стандартные функции не покрывают специфические требования. Например, если нужно посчитать возраст на конкретную дату с учётом того, что день рождения ещё не наступил. В таких случаях помогают комбинированные формулы.

Пример 1: Расчёт полных лет с учётом дня и месяца:

=ЕСЛИИЛИ(

МЕСЯЦ(конечная_дата)>МЕСЯЦ(начальная_дата);

ИЛИ(

МЕСЯЦ(конечная_дата)=МЕСЯЦ(начальная_дата);

ДЕНЬ(конечная_дата)>=ДЕНЬ(начальная_дата)

);

ГОД(конечная_дата)-ГОД(начальная_дата);

ГОД(конечная_дата)-ГОД(начальная_дата)-1

)

Эта формула проверяет, прошёл ли день рождения в текущем году. Если да — возвращает разницу годов, если нет — уменьшает результат на 1.

Пример 2: Расчёт лет, месяцев и дней в одном столбце (результат типа "32 года, 5 месяцев, 14 дней"):

=РАЗНДАТ(A2;B2;"Y") & " года, " & РАЗНДАТ(A2;B2;"YM") & " месяцев, " & РАЗНДАТ(A2;B2;"MD") & " дней"

Где A2 — начальная дата, B2 — конечная.

Как проверить, високосный ли год в Excel?

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

=ЕСЛИИЛИ(

ОСТАТ(ГОД(дата);400)=0;

И(ОСТАТ(ГОД(дата);4)=0; ОСТАТ(ГОД(дата);100)<>0);

"Високосный";

"Не високосный"

)

Эта формула учитывает правила григорианского календаря: год високосный, если он кратен 400, либо кратен 4, но не кратен 100.

Способ 5: Power Query для массовой обработки дат

Если вам нужно посчитать годы для тысяч строк (например, возраст клиентов или срок службы оборудования), ручной ввод формул неэффективен. В этом случае поможет Power Query — инструмент для преобразования данных в Excel.

Алгоритм действий:

  1. Выделите таблицу с датами и нажмите Данные → Получить данные → Из таблицы/диапазона.
  2. В открывшемся редакторе Power Query добавьте новый столбец: Добавить столбец → Пользовательский столбец.
  3. Введите формулу для расчёта лет. Например, для полных лет:
    =Date.Year([КонечнаяДата]) - Date.Year([НачальнаяДата]) - If(Date.From([КонечнаяДата]) < Date.From(Date.StartOfYear([КонечнаяДата]))) then 1 else 0
  4. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Преимущества Power Query:

  • ⚡ Обрабатывает миллионы строк без тормозов.
  • 🔄 Легко обновлять данные — достаточно кликнуть "Обновить".
  • 📊 Можно добавлять дополнительные преобразования (например, группировку по возрастным категориям).

⚠️ Внимание: В Power Query даты должны быть в формате DateTime. Если Excel воспринимает ваши данные как текст, предварительно преобразуйте их с помощью Date.From().

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

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

  1. Даты в формате текста. Если ячейка с датой отформатирована как текст (например, после импорта из CSV), Excel не сможет корректно вычислить разницу. Проверьте формат ячейки и при необходимости используйте =ДАТАЗНАЧ(текстовая_дата).
  2. Отрицательная разница. Если конечная дата раньше начальной, функции вроде РАЗНДАТ вернут ошибку. Добавьте проверку с ЕСЛИОШИБКА:
    =ЕСЛИОШИБКА(РАЗНДАТ(A2;B2;"Y"); "Дата окончания раньше начальной")
  3. 29 февраля в невисокосный год. Excel автоматически сдвигает 29 февраля на 28 февраля в невисокосные годы, но это может исказить расчёты. Например, разница между 29.02.2020 и 28.02.2021 будет считаться как 1 год, хотя фактически прошло 365 дней (неполный год).

Чтобы минимизировать ошибки, всегда тестируйте формулы на крайних случаях:

  • 🗓️ Даты с 29 февраля.
  • 🔄 Переход через границу года (например, 31.12.2022 и 01.01.2023).
  • ⏳ Очень большие промежутки (например, 100+ лет).

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

Как посчитать количество лет между датами в Google Таблицах?

В Google Таблицах работают те же функции, что и в Excel, но с англоязычным синтаксисом:

  • =DATEDIF(A2, B2, "Y") — для полных лет.
  • =YEARFRAC(A2, B2, 1) — для дробных лет.

Обратите внимание, что DATEDIF в Google Таблицах не документирована, но работает. Для надёжности дублируйте расчёты альтернативными формулами.

Почему функция РАЗНДАТ возвращает #ЧИСЛО!?

Ошибка #ЧИСЛО! появляется в трёх случаях:

  1. Конечная дата раньше начальной.
  2. Один из аргументов не является датой (например, текст или пустая ячейка).
  3. Некорректный код единицы (например, опечатка в "Y").

Используйте =ЕСЛИОШИБКА(РАЗНДАТ(...); "Ошибка в данных"), чтобы избежать сбоев.

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

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

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

Где A2 — ячейка с датой рождения. Формула будет автоматически обновляться при каждом открытии файла.

Можно ли посчитать годы с учётом только рабочих дней?

Да, но для этого потребуется комбинация функций. Сначала рассчитайте общее количество дней между датами (=B2-A2), затем вычтите выходные и праздники. Пример:

=ЦЕЛОЕ((РАЗНДАТ(A2;B2;"D") - ЧИСТРАБДНИ(A2;B2)) / 365)

Где ЧИСТРАБДНИ (или NETWORKDAYS) считает количество рабочих дней. Для точности добавьте список праздников в третий аргумент функции.

Как округлить результат YEARFRAC до целых лет?

В зависимости от задачи используйте:

  • =ОКРУГЛ(ДОЛЯГОДА(...); 0) — стандартное округление (3,4 → 3; 3,6 → 4).
  • =ОКРУГЛВВЕРХ(ДОЛЯГОДА(...); 0) — всегда вверх (3,1 → 4).
  • =ОКРУГЛВНИЗ(ДОЛЯГОДА(...); 0) — всегда вниз (3,9 → 3).