Как изменить месяцы в Excel: от простой замены до автоматических формул

Работа с датами в Microsoft Excel часто требует гибкости — особенно когда нужно изменить месяцы в готовых таблицах. Возможно, вам потребовалось сдвинуть все даты на квартал вперёд, заменить текстовые названия месяцев на числовые, или исправить ошибки в импортированных данных. Вручную редактировать сотни строк? Это неэффективно. К счастью, в Excel есть как минимум 5 способов автоматизировать эту задачу — от элементарной функции НАЙТИ/ЗАМЕНИТЬ до продвинутых формул с ДАТАМЕС и ТЕКСТ.

Но перед тем как приступить, важно понять формат ваших данных. Месяца в Excel могут храниться как:

- Даты (например, 01.05.2026 — здесь май зашифрован числом 5);

- Текст (например, "май" или "May");

- Числовые значения (например, 5 вместо мая).

От формата зависит выбор метода. Если вы попробуете применить формулу для дат к текстовому месяцу, получите ошибку #ЗНАЧ! — и наоборот.

В этой статье мы разберём все актуальные сценарии: от базовой замены до динамических формул, которые обновляют месяцы автоматически при изменении исходных данных. А если вы работаете с большими массивами, уделите внимание разделам про Power Query и макросы — они сэкономят часы времени.

1. Замена месяцев как текста: функция "Найти и заменить"

Самый простой способ — если месяца в вашей таблице записаны словами (например, "январь", "февраль" или "Jan", "Feb"). Здесь не нужны формулы: достаточно стандартного инструмента Найти и заменить (горячие клавиши Ctrl+H).

Как это работает:

  1. Выделите диапазон ячеек с месяцами (или всю таблицу — Ctrl+A).
  2. Нажмите Ctrl+H, чтобы открыть окно замены.
  3. В поле "Найти" введите название месяца (например, "март").
  4. В поле "Заменить на" введите новое значение (например, "апрель" или 4 для числового формата).
  5. Нажмите "Заменить всё".

⚠️ Внимание: Если в таблице есть ячейки с частичным совпадением (например, "март 2026" и "март 2026"), инструмент заменит все вхождения слова "март". Чтобы избежать ошибок, используйте точное соответствие или заменяйте по одной ячейке (Найти далее → проверка → Заменить).

✔ Убедитесь, что месяца записаны ТОЛЬКО текстом (не датами)

✔ Проверьте регистр (Excel различает "Май" и "май")

✔ Создайте резервную копию таблицы (Файл → Сохранить как)

✔ Используйте "Заменить всё" только для однотипных данных

-->

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

2. Изменение месяцев в датах: формулы ДАТАМЕС и МЕСЯЦ

Если ваши месяца — часть дат (например, 15.06.2026), простая замена текста не сработает. Здесь нужны функции для работы с датами. Самые полезные:

  • 📅 ДАТАМЕС(дата; количество_месяцев) — сдвигает дату на заданное число месяцев.
  • 📊 МЕСЯЦ(дата) — возвращает номер месяца (1–12).
  • 🔄 ДАТА(год; месяц; день) — создаёт дату из отдельных компонентов.

Пример 1: Сдвинуть все даты на 1 месяц вперёд.

=ДАТАМЕС(A2; 1)

Если в ячейке A2 было 31.01.2026, формула вернёт 29.02.2026 (автоматически скорректирует последний день месяца).

Пример 2: Заменить месяц в дате на фиксированный (например, сделать все даты майскими).

=ДАТА(ГОД(A2); 5; ДЕНЬ(A2))

⚠️ Внимание: Функция ДАТАМЕС может вернуть ошибку #ЧИСЛО!, если результат выходит за пределы допустимых дат (например, сдвиг на 12 месяцев назад от 01.01.1900). Проверяйте граничные значения!

Даты (например, 05.06.2026)|Текстовые названия (например, "июнь")|Числовые месяца (например, 6)|Другое-->

3. Преобразование текстовых месяцев в даты (и обратно)

Частая проблема: месяца импортированы как текст ("январь 2026"), а нужно получить полноценную дату для сортировки или вычислений. Или наоборот — из даты 15.03.2026 требуется вытащить слово "март".

Из текста в дату:

Используйте комбинацию функций ДАТАЗНАЧ (для английских месяцев) или ПОИСКПОЗ + ДАТА для русских. Пример для формата "месяц год" (например, "март 2026"):

=ДАТА(ПРАВСИМВ(A2;4); ПОИСКПОЗ(ЛЕВСИМВ(A2; ПОИСК(" ";A2)-1); {"январь";"февраль";...;"декабрь"}); 1)

Здесь:

- ПРАВСИМВ(A2;4) извлекает год (2026).

- ЛЕВСИМВ + ПОИСК выделяет название месяца ("март").

- ПОИСКПОЗ преобразует его в номер (3).

Из даты в текст:

Для обратного преобразования (например, получить "май" из 15.05.2026) используйте:

=ТЕКСТ(A2; "[$-ru-RU]MMMM")

Формат "MMMM" выведет полное название месяца на русском. Для сокращённого ("май" → "май") используйте "MMM".

Почему ДАТАЗНАЧ не работает с русскими месяцами?

Функция ДАТАЗНАЧ распознаёт только английские названия месяцев (например, "January"). Для русских названий приходится использовать обходные пути — как в примере выше с ПОИСКПОЗ или создавать собственную таблицу соответствий.

4. Массовая замена месяцев с Power Query

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

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

  1. Выделите таблицу и перейдите на вкладку "Данные""Из таблицы/диапазона" (в группе "Получить и преобразовать данные").
  2. В открывшемся редакторе Power Query выберите столбец с месяцами.
  3. На вкладке "Преобразовать" выберите:

    - "Заменить значения" (для текстовых месяцев);

    - "Извлечь""Текст после делителя" (если месяц часть строки, например "01-март-2026").

  4. Для дат используйте "Столбец даты""Извлечь""Месяц""Название месяца".
  5. Нажмите "Закрыть и загрузить", чтобы вернуть данные в Excel.

⚠️ Внимание: После загрузки данные в Power Query становятся статическими. Если исходная таблица обновится, придётся повторно запускать запрос (кликнуть правой кнопкой по таблице → "Обновить").

5. Автоматизация с макросами (VBA)

Для повторяющихся задач (например, ежемесячное обновление отчётов) удобно написать макрос на VBA. Он позволит менять месяца в один клик, даже если данные хранятся в разных файлах.

Пример макроса для замены текстовых месяцев:

Sub ReplaceMonths()

Dim ws As Worksheet

Dim rng As Range

Dim cell As Range

Dim monthMap As Variant

' Создаём словарь замен (старое → новое)

monthMap = Array("январь", "февраль", "март", "апрель", "май", "июнь", _

"июль", "август", "сентябрь", "октябрь", "ноябрь", "декабрь")

Set ws = ActiveSheet

Set rng = ws.UsedRange

For Each cell In rng

If Not IsError(Application.Match(cell.Value, monthMap, 0)) Then

' Заменяем, например, "январь" на "февраль" (сдвиг +1)

cell.Value = monthMap((Application.Match(cell.Value, monthMap, 0) + 1) Mod 12)

End If

Next cell

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Запустите макрос нажатием F5 или через Макросы на вкладке "Разработчик".

⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, только если файл из надёжного источника.

6. Частые ошибки и как их избежать

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

Ошибка Причина Решение
#ЗНАЧ! в формуле ДАТАМЕС Ячейка содержит текст, а не дату Преобразуйте текст в дату с помощью ДАТАЗНАЧ или ЗНАЧЕН
Месяца заменяются некорректно (например, "январь"1) Функция НАЙТИ/ЗАМЕНИТЬ заменяет части слов (например, "январь" в "январский") Используйте точное соответствие или заменяйте по одной ячейке
Формула возвращает #ИМЯ? Опечатка в названии функции (например, ДАТАМЕС вместо ДАТАМЕС) Проверьте регистр и язык формул (в русской версии Excel функции пишутся по-русски)
После замены даты отображаются как числа (например, 44675) Ячейки имеют общий формат, а не формат даты Выделите ячейки → Ctrl+1 → выберите формат "Дата"

Ещё одна распространённая ловушка — автоматическое преобразование дат. Например, если вы введёте "1-12" (1 декабря), Excel может интерпретировать это как "1 дек" или даже как "01.12.2026". Чтобы избежать неожиданностей, всегда проверяйте формат ячеек (Главная → Формат → Формат ячеек).

7. Продвинутые приёмы: динамические месяца и условная замена

Иногда требуется не просто заменить месяца, а сделать это условно или динамически. Например:

- Заменить месяц только для строк, где продажи превысили план.

- Автоматически обновлять месяц в заголовках отчётов при изменении текущей даты.

Пример 1: Условная замена с ЕСЛИ

Допустим, в столбце A — даты, а в столбце B — продажи. Нужно сдвинуть дату на месяц вперёд, только если продажи > 1000:

=ЕСЛИ(B2>1000; ДАТАМЕС(A2;1); A2)

Пример 2: Динамический заголовок с СЕГОДНЯ

Чтобы в заголовке отчёта всегда отображался текущий месяц (например, "Отчёт за май 2026"):

="Отчёт за " & ТЕКСТ(СЕГОДНЯ(); "[$-ru-RU]MMMM YYYY")

Пример 3: Замена по нескольким условиям

Если нужно заменить месяца по сложной логике (например, "январь""квартал 1", "февраль""квартал 1", "март""квартал 1", а остальные оставить без изменений), используйте ВЫБОР:

=ВЫБОР(МЕСЯЦ(A2);

"квартал 1"; "квартал 1"; "квартал 1";

"квартал 2"; "квартал 2"; "квартал 2";

"квартал 3"; "квартал 3"; "квартал 3";

"квартал 4"; "квартал 4"; "квартал 4")

Важно: Функция ТЕКСТ(СЕГОДНЯ(); "MMMM") обновит месяц в заголовке автоматически при каждом открытии файла. Но если вам нужно зафиксировать месяц (например, для архивного отчёта), замените СЕГОДНЯ на конкретную дату (например, ДАТА(2026;5;1) для мая 2026).

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

Как заменить месяца в датах на английские названия (например, "January")?

Используйте функцию ТЕКСТ с английским форматом:

=ТЕКСТ(A2; "[$-en-US]MMMM")

Для сокращённых названий (например, "Jan") замените "MMMM" на "MMM".

Почему после замены месяца даты сбились (например, 31 января стало 3 марта)?

Функция ДАТАМЕС автоматически корректирует даты, если новый месяц короче. Например, 31 января + 1 месяц = 28/29 февраля (в зависимости от високосного года). Чтобы избежать этого, используйте:

=ЕСЛИ(ДЕНЬ(A2)>ДЕНЬ(ДАТА(ГОД(A2); МЕСЯЦ(A2)+1; 1)-1); ДАТА(ГОД(A2); МЕСЯЦ(A2)+1; ДЕНЬ(ДАТА(ГОД(A2); МЕСЯЦ(A2)+1; 1)-1)); ДАТАМЕС(A2;1))

Эта формула оставляет последний день месяца, если в новом месяце меньше дней.

Можно ли заменить месяца в защищённом листе?

Нет, если лист защищён, большинство методов (включая Найти и заменить, формулы, Power Query) не сработают. Варианты:

  • Снимите защиту (Рецензирование → Снять защиту листа).
  • Скопируйте данные на новый лист и работайте там.
  • Используйте макрос с разрешением на редактирование защищённых ячеек (в настройках защиты листа).
Как заменить месяца в сводной таблице?

В сводной таблице месяца заменяются через источник данных:

  1. Щёлкните правой кнопкой по сводной таблице → "Изменить данные".
  2. В исходной таблице измените месяца любым из описанных методов.
  3. Обновите сводную таблицу (Анализ → Обновить).

Если месяца в сводной таблице сгруппированы (например, по кварталам), сначала разгруппируйте их (Правая кнопка → Разгруппировать).

Как автоматически обновлять месяц в формулах при изменении года?

Создайте динамическую дату на основе года из другой ячейки. Например, если в B1 указан год (2026), а нужно получить "май 2026":

=ТЕКСТ(ДАТА(B1; 5; 1); "[$-ru-RU]MMMM YYYY")

Теперь при изменении года в B1 месяц обновится автоматически.