Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных, планировании проектов или ведении финансовой отчётности. Часто требуется сдвинуть дату на определённый период: добавить неделю, квартал или, что особенно актуально, прибавить месяц. На первый взгляд задача простая, но здесь кроются подводные камни: разное количество дней в месяцах, високосные годы и переходы через годовые границы.
Многие пользователи пытаются просто сложить дату с числом 30 или 31, но такой подход приводит к ошибкам. Например, если к 31.01.2026 прибавить 31 день, Excel вернёт 03.03.2026 вместо ожидаемого 28.02.2026. В этой статье мы разберём 5 надёжных способов корректного добавления месяцев к датам — от простых формул до продвинутых функций, а также покажем, как избежать типичных ошибок.
Почему нельзя просто прибавлять 30 или 31 день
Наивный подход — сложение даты с фиксированным числом дней — работает только в идеальных условиях. Например, прибавление 30 дней к 15.01.2026 даст 14.02.2026, что близко к ожидаемому результату. Однако уже с датой 31.01.2026 этот метод ломается: 31 + 30 = 61-й день года, что соответствует 01.03.2026 вместо корректного 28.02.2026 (или 29.02.2026 в високосный год).
Проблема усугубляется при работе с концами месяцев:
- 📅 Февраль: может содержать 28 или 29 дней.
- 📅 Апрель, июнь, сентябрь, ноябрь: имеют по 30 дней.
- 📅 Остальные месяцы: 31 день.
Excel не "знает", что вы хотите прибавить именно месяц, а не дни, поэтому просто выполняет арифметическую операцию. Результат часто оказывается неточным.
⚠️ Внимание: Если вы работаете с финансовыми отчётами или графиками проектов, ошибка даже в один день может привести к серьёзным последствиям — например, к неправильному расчёту процентов по кредиту или срыву дедлайнов.
Способ 1: Функция ДАТАМЕС (EDATE) — самый надёжный метод
Функция ДАТАМЕС (или EDATE в английской версии) специально создана для добавления месяцев к датам. Она автоматически учитывает количество дней в каждом месяце и корректно обрабатывает переходы через годовые границы.
Синтаксис:
=ДАТАМЕС(нач_дата; число_месяцев)
где:
нач_дата— исходная дата (например,"31.01.2026"или ссылка на ячейкуA1).число_месяцев— количество месяцев для добавления (может быть отрицательным для вычитания).
Примеры использования:
| Формула | Исходная дата | Результат | Пояснение |
|---|---|---|---|
=ДАТАМЕС("31.01.2026"; 1) |
31.01.2026 |
29.02.2026 |
Автоматически скорректировано на последний день февраля (високосный год). |
=ДАТАМЕС("15.03.2026"; 3) |
15.03.2026 |
15.06.2026 |
Простое добавление 3 месяцев без корректировки дня. |
=ДАТАМЕС("31.12.2026"; -2) |
31.12.2026 |
30.11.2026 |
Вычитание месяцев с учётом количества дней в ноябре. |
Функция ДАТАМЕС входит в пакет Надстройки "Пакет анализа". Если её нет в вашей версии Excel, включите надстройку через Файл → Параметры → Надстройки → Управление: Надстройки Excel → Перейти → Пакет анализа.
Способ 2: Формула на основе функции ДАТА
Если ДАТАМЕС по какой-то причине недоступна, можно обойтись стандартной функцией ДАТА. Этот метод требует немного больше усилий, но даёт такой же точный результат.
Синтаксис:
=ДАТА(ГОД(нач_дата); МЕСЯЦ(нач_дата) + число_месяцев; ДЕНЬ(нач_дата))
Разберём на примере добавления 1 месяца к дате в ячейке A1:
=ДАТА(ГОД(A1); МЕСЯЦ(A1) + 1; ДЕНЬ(A1))
Как это работает:
- 📌
ГОД(A1)— извлекает год из исходной даты. - 📌
МЕСЯЦ(A1) + 1— прибавляет 1 к номеру месяца. - 📌
ДЕНЬ(A1)— сохраняет исходный день.
Excel автоматически скорректирует день, если он превышает количество дней в новом месяце. Например, для 31.01.2026 формула вернёт 29.02.2026.
Исходная дата в формате даты (не текст)|Функции ГОД/МЕСЯЦ/ДЕНЬ применены к правильной ячейке|Число месяцев указано с учётом знака (+ или -)|Формат ячейки с результатом — "Дата"-->
Способ 3: Сложение дней с учётом месяцев (для старых версий Excel)
В Excel 2003 и более ранних версиях функции ДАТАМЕС нет, а формула с ДАТА может казаться громоздкой. Альтернативный метод — вычислить количество дней в текущем и следующем месяце, а затем прибавить разницу.
Алгоритм:
1. Определите последний день текущего месяца:
=ДАТА(ГОД(A1); МЕСЯЦ(A1) + 1; 0)
2. Найдите разницу между последним днём и исходной датой.
3. Прибавьте эту разницу к исходной дате.
Пример для добавления 1 месяца:
=A1 + (ДАТА(ГОД(A1); МЕСЯЦ(A1) + 1; 0) - ДАТА(ГОД(A1); МЕСЯЦ(A1); ДЕНЬ(A1))) + 1
Эта формула работает, но выглядит сложно. Рекомендуем использовать её только при отсутствии альтернатив.
⚠️ Внимание: В старых версиях Excel (до 2007) функцииДАТА,ГОД,МЕСЯЦиДЕНЬмогут требовать ручного ввода как массивы (нажимайтеCtrl+Shift+Enterпосле ввода формулы).
Способ 4: Использование функции РАБДЕНЬ (WORKDAY) для рабочих дней
Если вам нужно прибавить месяц, но учитывать только рабочие дни (исключая выходные и праздники), используйте функцию РАБДЕНЬ. Она полезна для расчёта сроков выполнения задач или доставки.
Синтаксис:
=РАБДЕНЬ(нач_дата; число_дней; [праздники])
Чтобы прибавить месяц, сначала вычислите количество рабочих дней в нём, затем используйте РАБДЕНЬ. Например, для добавления 1 рабочего месяца (≈20 рабочих дней):
=РАБДЕНЬ(A1; 20)
Для точного расчёта:
1. Создайте список праздников в диапазоне (например, D1:D10).
2. Используйте формулу:
=РАБДЕНЬ(A1; 20; D1:D10)
Как посчитать точное количество рабочих дней в месяце?
Используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(ДАТА(ГОД(A1);МЕСЯЦ(A1);1); ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0); D1:D10)
где D1:D10 — диапазон с праздничными датами.
Способ 5: Power Query для массового добавления месяцев
Если вам нужно прибавить месяц к сотням или тысячам дат, ручной ввод формул неэффективен. В этом случае поможет инструмент Power Query (доступен в Excel 2016 и новее).
Пошаговая инструкция:
1. Выделите исходные данные и перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
2. В открывшемся редакторе Power Query выберите столбец с датами.
3. Перейдите на вкладку Добавить столбец → Настраиваемый столбец.
4. Введите формулу:
= Date.AddMonths([ВашСтолбец]; 1)
5. Нажмите ОК и загрузите данные обратно в Excel.
Преимущества метода:
- ⚡ Автоматизация: Обрабатывает миллионы строк за секунды.
- 🔄 Гибкость: Можно добавлять не только месяцы, но и годы, дни.
- 📊 Интеграция: Легко комбинировать с другими преобразованиями данных.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при работе с датами. Вот самые распространённые:
- Текст вместо даты: Excel воспринимает
"31.01.2026"как текст, если ячейка отформатирована неверно. Всегда проверяйте формат ячейки (должен быть "Дата", а не "Общий" или "Текстовый"). - Отрицательные месяцы: При вычитании месяцев (например,
=ДАТАМЕС(A1; -13)) Excel корректно пересчитает год, но формула станет менее читаемой. Лучше разбить операцию на два шага. - Игнорирование високосных годов: Функции
ДАТАМЕСиДАТАучитывают високосные годы автоматически, но при ручном сложении дней это может стать проблемой.
Как проверить формат ячейки:
1. Выделите ячейку с датой.
2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
3. Убедитесь, что выбрана категория Дата.
⚠️ Внимание: Если после применения формулы результат отображается как число (например, 45341), это значит, что ячейка с результатом имеет формат "Общий". Измените его на "Дата".
FAQ: Ответы на частые вопросы
Можно ли прибавить к дате сразу год?
Да, используйте функцию ДАТА:
=ДАТА(ГОД(A1) + 1; МЕСЯЦ(A1); ДЕНЬ(A1))
или ДАТАМЕС с параметром 12:
=ДАТАМЕС(A1; 12)
Почему после добавления месяца дата сдвинулась на несколько дней?
Скорее всего, исходная дата была в текстовом формате, и Excel интерпретировал её как число. Преобразуйте текст в дату с помощью функции ДАТАЗНАЧ:
=ДАТАМЕС(ДАТАЗНАЧ(A1); 1)
Как прибавить месяц, если дата хранится в виде "январь 2026"?
Сначала преобразуйте текст в дату с помощью ДАТАЗНАЧ или комбинации функций:
=ДАТА(2026; ПОИСКПОЗ("январь"; {"январь";"февраль";...}; 0); 1)
Затем применяйте ДАТАМЕС.
Можно ли прибавить месяц в Google Sheets?
Да, в Google Таблицах используется та же функция EDATE (или ДАТАМЕС в русской версии). Синтаксис идентичен Excel.
Как прибавить месяц к дате в формате "01.01.2026 15:30"?
Функции ДАТАМЕС и ДАТА игнорируют время. Чтобы сохранить его, используйте:
=ДАТАМЕС(A1; 1) + (A1 - ЦЕЛОЕ(A1))
где A1 - ЦЕЛОЕ(A1) возвращает дробную часть (время).