Работа с датами в Microsoft Excel часто требует гибкости — особенно когда нужно изменить месяцы в готовых таблицах. Возможно, вам потребовалось сдвинуть все даты на квартал вперёд, заменить текстовые названия месяцев на числовые, или исправить ошибки в импортированных данных. Вручную редактировать сотни строк? Это неэффективно. К счастью, в Excel есть как минимум 5 способов автоматизировать эту задачу — от элементарной функции НАЙТИ/ЗАМЕНИТЬ до продвинутых формул с ДАТАМЕС и ТЕКСТ.
Но перед тем как приступить, важно понять формат ваших данных. Месяца в Excel могут храниться как:
- Даты (например, 01.05.2026 — здесь май зашифрован числом 5);
- Текст (например, "май" или "May");
- Числовые значения (например, 5 вместо мая).
От формата зависит выбор метода. Если вы попробуете применить формулу для дат к текстовому месяцу, получите ошибку #ЗНАЧ! — и наоборот.
В этой статье мы разберём все актуальные сценарии: от базовой замены до динамических формул, которые обновляют месяцы автоматически при изменении исходных данных. А если вы работаете с большими массивами, уделите внимание разделам про Power Query и макросы — они сэкономят часы времени.
1. Замена месяцев как текста: функция "Найти и заменить"
Самый простой способ — если месяца в вашей таблице записаны словами (например, "январь", "февраль" или "Jan", "Feb"). Здесь не нужны формулы: достаточно стандартного инструмента Найти и заменить (горячие клавиши Ctrl+H).
Как это работает:
- Выделите диапазон ячеек с месяцами (или всю таблицу —
Ctrl+A). - Нажмите
Ctrl+H, чтобы открыть окно замены. - В поле "Найти" введите название месяца (например, "март").
- В поле "Заменить на" введите новое значение (например, "апрель" или 4 для числового формата).
- Нажмите "Заменить всё".
⚠️ Внимание: Если в таблице есть ячейки с частичным совпадением (например, "март 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+.
Пошаговая инструкция:
- Выделите таблицу и перейдите на вкладку "Данные" → "Из таблицы/диапазона" (в группе "Получить и преобразовать данные").
- В открывшемся редакторе Power Query выберите столбец с месяцами.
- На вкладке "Преобразовать" выберите:
- "Заменить значения" (для текстовых месяцев);
- "Извлечь" → "Текст после делителя" (если месяц часть строки, например "01-март-2026").
- Для дат используйте "Столбец даты" → "Извлечь" → "Месяц" → "Название месяца".
- Нажмите "Закрыть и загрузить", чтобы вернуть данные в 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
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос нажатием
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) не сработают. Варианты:
- Снимите защиту (
Рецензирование → Снять защиту листа). - Скопируйте данные на новый лист и работайте там.
- Используйте макрос с разрешением на редактирование защищённых ячеек (в настройках защиты листа).
Как заменить месяца в сводной таблице?
В сводной таблице месяца заменяются через источник данных:
- Щёлкните правой кнопкой по сводной таблице → "Изменить данные".
- В исходной таблице измените месяца любым из описанных методов.
- Обновите сводную таблицу (
Анализ → Обновить).
Если месяца в сводной таблице сгруппированы (например, по кварталам), сначала разгруппируйте их (Правая кнопка → Разгруппировать).
Как автоматически обновлять месяц в формулах при изменении года?
Создайте динамическую дату на основе года из другой ячейки. Например, если в B1 указан год (2026), а нужно получить "май 2026":
=ТЕКСТ(ДАТА(B1; 5; 1); "[$-ru-RU]MMMM YYYY")
Теперь при изменении года в B1 месяц обновится автоматически.