Как прибавить 2 месяца к дате в Excel: от базовых формул до VBA-автоматизации

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

На первый взгляд кажется, что прибавить два месяца к дате в Microsoft Excel так же просто, как сложить два числа. Но любой, кто пытался сделать это через обычное сложение (=A1+60), сталкивался с неожиданными результатами. Дело в том, что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), где 1 единица = 1 день. Поэтому прибавление 60 дней к 1 февраля даст не 1 апреля, а 2 апреля — из-за разного количества дней в месяцах.

Ещё сложнее обстоят дела с переходом через год. Например, прибавление двух месяцев к 31 декабря 2023 года должно дать 28 февраля 2026 (так как в феврале нет 31-го числа). Ручное исправление таких случаев отнимает время и чревато ошибками. К счастью, в Excel есть специализированные функции, которые учитывают все эти нюансы автоматически.

В этой статье мы разберём 5 надёжных способов прибавить 2 месяца к дате — от элементарных формул для новичков до автоматизированных решений для опытных пользователей. Каждый метод проиллюстрирован примерами и подходит для разных версий Excel (2010–2023) и Google Таблиц.

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

Функция ДАТАМЕС (англ. EDATE) специально создана для работы с месяцами. Она автоматически корректирует даты при переходе через границы месяцев и лет. Синтаксис функции:

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

Пример: чтобы прибавить 2 месяца к дате в ячейке A1, используйте:

=ДАТАМЕС(A1; 2)

Особенности функции ДАТАМЕС:

  • 🔹 Автоматически обрабатывает "несуществующие" даты (например, 31 апреля → 30 апреля или 31 мая).
  • 🔹 Работает с отрицательными значениями (например, =ДАТАМЕС(A1; -2) отнимет 2 месяца).
  • 🔹 Доступна во всех версиях Excel, начиная с 2007 года.
⚠️ Внимание: Если в ячейке A1 не дата, а текст (например, "01.01.2023"), Excel вернёт ошибку #ЗНАЧ!. Проверьте формат ячейки через Формат ячеек → Числовой → Дата.

Убедитесь, что ячейка содержит дату, а не текст|Проверьте формат ячейки (должен быть "Дата")|Используйте английскую версию функции (EDATE) в нерусских Excel|Тестируйте формулу на крайних случаях (31 декабря, 29 февраля)-->

Способ 2: Комбинация ДАТА + ГОД/МЕСЯЦ/ДЕНЬ

Если функция ДАТАМЕС по какой-то причине недоступна (например, в очень старых версиях Excel), можно использовать альтернативный подход с функциями ДАТА, ГОД, МЕСЯЦ и ДЕНЬ. Формула выглядит так:

=ДАТА(ГОД(A1); МЕСЯЦ(A1)+2; ДЕНЬ(A1))

Разберём, как это работает:

  1. ГОД(A1) — извлекает год из исходной даты.
  2. МЕСЯЦ(A1)+2 — прибавляет 2 к номеру месяца.
  3. ДЕНЬ(A1) — сохраняет день месяца.
  4. ДАТА() — собирает всё обратно в корректную дату.

Преимущество этого метода в том, что он не требует специальных надстроек и работает даже в Excel 2003. Однако есть нюанс: если результат выходит за пределы 12 месяцев, Excel автоматически скорректирует год. Например, для даты 15 ноября 2023 года формула вернёт 15 января 2026.

Исходная датаФормулаРезультатПояснение
31.01.2023=ДАТА(ГОД(A1);МЕСЯЦ(A1)+2;ДЕНЬ(A1))31.03.2023Корректно, так как в марте 31 день.
31.03.2023=ДАТА(ГОД(A1);МЕСЯЦ(A1)+2;ДЕНЬ(A1))31.05.2023Корректно, так как в мае 31 день.
31.12.2023=ДАТА(ГОД(A1);МЕСЯЦ(A1)+2;ДЕНЬ(A1))28.02.2026Excel автоматически исправляет на последний день февраля.
=ДАТА(ГОД(A1); МЕСЯЦ(A1)+2; ДЕНЬ(A1)+5) — это добавит 2 месяца и 5 дней.-->

Способ 3: Использование функции ДОЛЯГОДА (для финансовых расчётов)

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

=A1 + ДОЛЯГОДА(A1; ДАТА(ГОД(A1); МЕСЯЦ(A1)+2; ДЕНЬ(A1)); 1) * 365

Этот метод менее надёжен, чем предыдущие, так как:

  • 🔸 Зависит от количества дней в году (високосный или нет).
  • 🔸 Может давать погрешности из-за округления.
  • 🔸 Требует дополнительных вычислений для корректного результата.

Мы не рекомендуем использовать ДОЛЯГОДА для простого прибавления месяцев, но если вам нужно прибавить часть месяца (например, 1.5 месяца), этот способ может пригодиться. Для целых месяцев лучше выбрать ДАТАМЕС или комбинацию ДАТА+ГОД/МЕСЯЦ/ДЕНЬ.

Функция ДАТАМЕС (EDATE)|Комбинация ДАТА+ГОД/МЕСЯЦ/ДЕНЬ|Функция ДОЛЯГОДА (YEARFRAC)|Другой метод-->

Способ 4: VBA-макрос для массового добавления месяцев

Если вам нужно прибавить 2 месяца к тысячам строк или делать это регулярно, имеет смысл автоматизировать процесс с помощью VBA (Visual Basic for Applications). Ниже приведён простой макрос, который добавляет 2 месяца ко всем выделенным ячейкам с датами:

Sub AddTwoMonths()

Dim cell As Range

For Each cell In Selection

If IsDate(cell.Value) Then

cell.Value = DateAdd("m", 2, cell.Value)

End If

Next cell

End Sub

Как использовать этот макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel, выделите ячейки с датами.
  4. Запустите макрос через View → Macros → AddTwoMonths → Run.

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

  • 🚀 Обрабатывает тысячи ячеек за секунды.
  • 🔧 Можно модифицировать для добавления дней, лет или недель.
  • 📅 Автоматически исправляет некорректные даты (например, 31 апреля).
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе Excel заблокирует выполнение кода. Также убедитесь, что в настройках безопасности разрешены макросы (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов).
Как модифицировать макрос для других временных интервалов?

Чтобы прибавить 1 год и 2 месяца, замените строку на:

cell.Value = DateAdd("yyyy", 1, cell.Value) + 2

Для добавления 3 недель используйте:

cell.Value = DateAdd("ww", 3, cell.Value)

Для вычитания времени (например, отнять 2 месяца):

cell.Value = DateAdd("m", -2, cell.Value)

Способ 5: Google Таблицы — нюансы и отличия от Excel

В Google Таблицах также можно прибавлять месяцы к датам, но есть несколько ключевых отличий от Excel:

  1. Функция ДАТАМЕС отсутствует, но есть её английский аналог EDATE, который работает идентично.
  2. Формат дат по умолчанию может отличаться (например, в российской локали даты отображаются как дд.мм.гггг, но в формулах используется американский формат мм/дд/гггг).
  3. Автозаполнение работает иначе: если в Excel можно "протянуть" формулу вниз, то в Google Таблицах иногда требуется явное копирование (Ctrl+CCtrl+V).

Пример формулы для Google Таблиц:

=EDATE(A1; 2)

Если вы работаете с динамическими датами (например, "сегодня + 2 месяца"), используйте комбинацию:

=EDATE(TODAY(); 2)
ДействиеExcelGoogle Таблицы
Прибавить 2 месяца=ДАТАМЕС(A1; 2)=EDATE(A1; 2)
Текущая дата + 2 месяца=ДАТАМЕС(СЕГОДНЯ(); 2)=EDATE(TODAY(); 2)
Комбинация ДАТА+ГОД/МЕСЯЦ=ДАТА(ГОД(A1);МЕСЯЦ(A1)+2;ДЕНЬ(A1))=DATE(YEAR(A1); MONTH(A1)+2; DAY(A1))

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

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

  • 🔴 #ЗНАЧ! — возникает, если ячейка содержит текст вместо даты. Решение: проверьте формат ячейки или используйте =ДАТАЗНАЧ(A1), чтобы преобразовать текст в дату.
  • 🔴 #ЧИСЛО! — появляется, если результат выходит за пределы поддерживаемых дат (с 1900 по 9999 год). Решение: проверьте корректность исходных данных.
  • 🔴 Неправильный месяц — например, вместо марта показывает май. Решение: убедитесь, что вы прибавляете именно месяцы, а не дни (+60 вместо ДАТАМЕС(A1; 2)).
  • 🔴 Дата отображается как число (например, 45345). Решение: измените формат ячейки на "Дата" через Формат → Формат ячейки.

Ещё одна частая ошибка — игнорирование високосных годов. Например, если вы прибавляете 2 месяца к 29 февраля 2026 года, результат должен быть 29 апреля 2026. Однако если исходная дата — 29 февраля 2023 (невисокосный год), Excel автоматически скорректирует её на 28 февраля. Чтобы избежать путаницы, всегда проверяйте результаты на крайних случаях.

⚠️ Внимание: Если вы работаете с финансовыми отчётами, где критична точность дат, используйте функцию =ДАТАРАЗН() для проверки разницы между исходной и полученной датами. Например:
=ДАТАРАЗН(A1; ДАТАМЕС(A1; 2); "m")

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

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

Можно ли прибавить 2 месяца к дате без использования функций?

Технически да, но это ненадёжно. Например, можно прибавить +60 к дате, но это добавит 60 дней, а не месяцев. Для точного результата лучше использовать ДАТАМЕС или комбинацию ДАТА+ГОД/МЕСЯЦ/ДЕНЬ.

Почему после прибавления месяцев дата сдвигается на несколько дней?

Это происходит из-за разного количества дней в месяцах. Например, 31 января + 1 месяц = 28 февраля (или 29 в високосный год). Excel автоматически корректирует дату, чтобы она оставалась валидной. Если вам нужно сохранить день месяца, используйте формулу:

=ЕСЛИ(ДЕНЬ(A1)<=ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+2+1;0)); ДАТА(ГОД(A1);МЕСЯЦ(A1)+2;ДЕНЬ(A1)); ДАТА(ГОД(A1);МЕСЯЦ(A1)+3;0))

Она проверяет, существует ли исходный день в целевом месяце, и корректирует дату при необходимости.

Как прибавить 2 месяца к дате в Power Query?

В Power Query (инструмент для обработки данных в Excel) используйте следующий код на языке M:

[DateColumn] = Date.AddMonths([DateColumn], 2)

Полная инструкция:

  1. Выделите столбец с датами.
  2. Перейдите в Данные → Из таблицы/диапазона (или Get & Transform → From Table/Range).
  3. В редакторе Power Query выберите столбец → Преобразовать → Дата → Добавить месяцы.
  4. Укажите количество месяцев (2) и примените изменения.

Можно ли прибавить 2 рабочих месяца (исключая выходные)?

Для этого нужно комбинировать ДАТАМЕС с функцией РАБДЕНЬ (англ. WORKDAY). Например:

=РАБДЕНЬ(ДАТАМЕС(A1; 2); 0)

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

=РАБДЕНЬ(ДАТАМЕС(A1; 2); 0; $C$1:$C$10)

где C1:C10 — диапазон с датами праздников.

Как сделать так, чтобы прибавление месяцев работало автоматически при изменении исходной даты?

Используйте динамические формулы или таблицы Excel:

  1. Преобразуйте диапазон в таблицу (Вставка → Таблица или Ctrl+T).
  2. В соседнем столбце введите формулу =ДАТАМЕС([@Дата]; 2), где Дата — заголовок столбца с исходными датами.
  3. Excel автоматически продублирует формулу на все строки таблицы и будет обновлять результаты при изменении исходных данных.

Альтернативно, используйте именованные диапазоны:

=ДАТАМЕС(ИсходнаяДата; 2)

где ИсходнаяДата — имя диапазона с вашей датой.