Как в Excel сложить года и месяцы: 5 рабочих способов с примерами

Почему простая арифметика не работает с датами в Excel

Вы когда-нибудь пытались сложить 2 года и 5 месяцев с другой датой в Microsoft Excel, но получали странный результат? Например, прибавили к 01.01.2020 два года и получили 01.01.2022 — а потом добавили 5 месяцев и ожидали увидеть 01.06.2022, но вместо этого Excel выдал 06.01.2022? Это классическая ошибка новичков, и она возникает из-за того, что программа воспринимает даты не как привычные нам календарные значения, а как последовательные числа.

Дело в том, что Excel хранит даты в формате количества дней с 1 января 1900 года. Например, 01.01.2020 для программы — это число 43831. Когда вы пытаетесь просто сложить года и месяцы как обычные числа (2020 + 2 = 2022, 1 + 5 = 6), Excel не понимает контекст и обрабатывает операции по своим правилам. В результате месяцы могут "перетекать" в года, а дни — сбрасываться. Чтобы избежать хаоса, нужно использовать специальные функции, которые учитывают календарную логику.

Способ 1: Функция ДАТАМЕС — самый простой вариант

Если вам нужно прибавить к дате только месяцы (или года, переведённые в месяцы), функция ДАТАМЕС (EDATE в английской версии) — ваш лучший помощник. Она автоматически корректирует результат с учётом количества дней в месяце. Например, если вы прибавите 1 месяц к 31.01.2023, получите 28.02.2023 (а не 31.02.2023, которого не существует).

Формат функции:

=ДАТАМЕС(нач_дата; кол_месяцев)

Примеры использования:

  • 📅 Прибавить 5 месяцев к 15.03.2023:
    =ДАТАМЕС("15.03.2023"; 5)

    Результат: 15.08.2023

  • 📅 Прибавить 2 года и 3 месяца (27 месяцев) к 01.12.2020:
    =ДАТАМЕС("01.12.2020"; 2*12+3)

    Результат: 01.03.2023

⚠️ Внимание: Функция ДАТАМЕС не работает с отрицательными значениями. Если нужно вычесть месяцы, используйте ту же функцию, но с минусом перед количеством: =ДАТАМЕС("15.03.2023"; -5).

Способ 2: Комбинация ГОД, МЕСЯЦ и ДЕНЬ для точного контроля

Когда нужно прибавить и года, и месяцы отдельно, используйте связку из трёх функций: ГОД, МЕСЯЦ и ДЕНЬ. Этот метод даёт максимальную гибкость, так как позволяет управлять каждой компонентой даты независимо. Формула выглядит так:

=ДАТА(ГОД(нач_дата)+кол_лет; МЕСЯЦ(нач_дата)+кол_месяцев; ДЕНЬ(нач_дата))

Разберём на примере: прибавим 3 года и 7 месяцев к дате 20.05.2021.

  • 📌 Извлекаем год: ГОД("20.05.2021") = 2021, прибавляем 3 → 2026.
  • 📌 Извлекаем месяц: МЕСЯЦ("20.05.2021") = 5, прибавляем 7 → 12 (ноябрь).
  • 📌 День остаётся без изменений: 20.

Итоговая формула:

=ДАТА(2021+3; 5+7; 20)

Результат: 20.12.2026.

⚠️ Внимание: Если сумма месяцев превышает 12, Excel автоматически перенесёт избыток в года. Например, МЕСЯЦ(нач_дата)+15 приведёт к добавлению 1 года и 3 месяцев.

Извлечь год, месяц и день отдельно|Проверить, не превышает ли сумма месяцев 12|Учесть високосные года при работе с февралями|Протестировать формулу на крайних датах (например, 29.02.2020)

-->

Способ 3: Использование ДАТА с ручным переносом месяцев в года

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

Формула:

=ДАТА(ГОД(нач_дата)+ЦЕЛОЕ(кол_месяцев/12); МЕСЯЦ(нач_дата)+ОСТАТ(кол_месяцев;12); ДЕНЬ(нач_дата))

Пример: прибавим 18 месяцев к дате 10.11.2022.

  • 🔢 ЦЕЛОЕ(18/12) = 1 (полных лет).
  • 🔢 ОСТАТ(18;12) = 6 (месяцев).
  • 📅 Итоговая дата: 10.05.2026 (2022 + 1 год = 2023, ноябрь + 6 месяцев = май).
Исходная дата Добавляемые месяцы Формула Результат
15.03.2023 12 =ДАТА(2023+1; 3; 15) 15.03.2026
29.02.2020 13 =ДАТА(2020+1; 2+1; 29) 28.02.2021 (автокоррекция)
31.12.2021 1 =ДАТА(2021; 12+1; 31) 31.01.2022

Функция ДАТАМЕС|Комбинация ГОД/МЕСЯЦ/ДЕНЬ|Ручной перенос месяцев|Другой вариант|Не работал с датами в Excel-->

Способ 4: Сложение лет и месяцев через текстовые функции (для нестандартных форматов)

Иногда даты хранятся в Excel в некорректном текстовом формате (например, "2 года 5 месяцев"). Чтобы сложить их с другой датой, сначала нужно преобразовать текст в числа. Для этого используйте комбинацию функций ПОИСК, ПСТР и ЗАМЕНИТЬ.

Пример: в ячейке A1 записано "2 года 5 месяцев", а в B1 — дата 01.01.2020. Формула для сложения:

=ДАТА(

ГОД(B1) + --ПСТР(A1; ПОИСК("год"; A1)-2; 1);

МЕСЯЦ(B1) + --ПСТР(A1; ПОИСК("месяц"; A1)-2; 1);

ДЕНЬ(B1)

)

Разбор:

  • 🔍 ПОИСК("год"; A1)-2 находит позицию слова "год" и отступает на 2 символа назад (к началу числа).
  • 🔢 ПСТР извлекает цифру перед "год" (в нашем случае "2").
  • 🔄 Двойной минус (--) преобразует текст в число.
⚠️ Внимание: Этот метод чувствителен к формату текста. Если в ячейке написано "2г 5м" вместо "2 года 5 месяцев", формулу придётся адаптировать.
Как обработать даты в формате "1y 6m" (международный стандарт)

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

=ДАТА(

ГОД(B1) + --ПСТР(A1; 1; ПОИСК("y"; A1)-1);

МЕСЯЦ(B1) + --ПСТР(A1; ПОИСК("y"; A1)+1; ПОИСК("m"; A1)-ПОИСК("y"; A1)-1);

ДЕНЬ(B1)

)

Способ 5: Автоматизация через Power Query (для больших массивов данных)

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

Пошаговая инструкция:

  1. Выделите таблицу с датами и нажмите Данные → Из таблицы/диапазона (вкладка Power Query).
  2. В открывшемся редакторе выберите Добавить столбец → Настраиваемый столбец.
  3. Введите формулу:
    Date.AddMonths([ВашаДата]; [Кол-во месяцев] + [Кол-во лет]*12)

    где [ВашаДата] — имя столбца с исходными датами, а [Кол-во месяцев] и [Кол-во лет] — столбцы с добавляемыми значениями.

  4. Нажмите Закрыть и загрузить — новый столбец с корректными датами появится в Excel.

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

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

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

  • 🚫 Ошибка #ЧИСЛО! — возникает, если результат выходит за пределы поддерживаемых Excel дат (с 01.01.1900 по 31.12.9999). Проверьте, не добавляете ли вы слишком большой промежуток времени.
  • 🚫 Неправильный месяц — если при добавлении месяцев дата "съезжает" на другой месяц (например, 31.01 + 1 месяц = 28.02), это не ошибка, а автокоррекция Excel. Чтобы избежать этого, используйте функцию ДАТА с явным указанием дня.
  • 🚫 Текст вместо даты — если Excel воспринимает вашу дату как текст (выровнена по левому краю), преобразуйте её в формат даты с помощью ДАТАЗНАЧ:
    =ДАТАЗНАЧ("31.12.2023")

Ещё одна частая проблема — неверный порядок аргументов в функции ДАТА. Запомните: сначала идёт год, затем месяц, и только потом день. Если перепутать местами, Excel не выдаст ошибку, но результат будет некорректным. Например, =ДАТА(2023; 15; 10) не вернёт ошибку, а преобразует 15 месяцев в 1 год и 3 месяца, выдав 10.04.2026.

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

Можно ли в Excel сложить года и месяцы без формул?

Нет, простого сложения через + недостаточно, так как Excel не понимает контекст "лет" и "месяцев" как календарных единиц. Однако вы можете создать пользовательскую функцию на VBA, которая будет обрабатывать даты по вашим правилам. Пример кода:

Function AddYearsMonths(startDate As Date, years As Integer, months As Integer) As Date

AddYearsMonths = DateSerial(Year(startDate) + years, Month(startDate) + months, Day(startDate))

End Function

После добавления этого кода в редактор VBA (Alt + F11) вы сможете использовать функцию =AddYearsMonths(A1; 2; 5) прямо в ячейках.

Почему при добавлении 12 месяцев к февралю 2020 года Excel показывает 28.02.2021, а не 29.02.2021?

Excel не сохраняет информацию о том, был ли исходный год високосным. При добавлении месяцев программа использует текущее количество дней в целевом месяце. Чтобы сохранить 29 февраля, используйте формулу:

=ЕСЛИ(И(ДЕНЬ(A1)=29; МЕСЯЦ(A1)=2; ГОД(A1) МОД 4=0); ДАТА(ГОД(A1)+1; 2; 29); ДАТАМЕС(A1; 12))
Как прибавить к дате 1 год и 1 месяц, если в результате должен быть тот же день?

Используйте функцию ДАТА с явным указанием дня, но добавьте проверку на корректность даты:

=ЕСЛИОШИБКА(ДАТА(ГОД(A1)+1; МЕСЯЦ(A1)+1; ДЕНЬ(A1)); ДАТА(ГОД(A1)+1; МЕСЯЦ(A1)+2; 1)-1)

Эта формула пытается создать дату с исходным днём, а если такой день не существует (например, 31 апреля), возвращает последний день месяца.

Можно ли сложить года и месяцы в Google Таблицах?

Да, в Google Sheets работают те же принципы, но функции называются по-английски:

  • =EDATE(A1; 5) — аналог ДАТАМЕС.
  • =DATE(YEAR(A1)+1; MONTH(A1)+6; DAY(A1)) — аналог ДАТА.

Отличие только в том, что Google Таблицы поддерживают отрицательные значения в EDATE без дополнительных надстроек.