Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Часто требуется не просто отобразить дату в формате «дд.мм.гггг», а выделить из неё конкретные компоненты: год, день недели или, что особенно актуально, название месяца. Например, при формировании отчётов по кварталам, создании календарей или визуализации временных трендов.
В этой статье мы разберём все возможные способы извлечения названия месяца из даты в Excel — от базовых функций типа ТЕКСТ() до гибких формул с ВЫБОР() и ИНДЕКС(). Вы узнаете, как получить месяц на русском или английском языке, в полной или сокращённой форме, а также как автоматизировать процесс для больших массивов данных. Особое внимание уделим нюансам работы с разными локалями и форматами ячеек, которые часто становятся причиной ошибок.
Почему стандартное форматирование не всегда подходит
Многие пользователи пытаются решить задачу через обычное форматирование ячеек (Формат ячеек → Числовые форматы → Дата). Действительно, здесь можно выбрать варианты вроде «март» или «мар», но у этого подхода есть критические ограничения:
- 🔹 Статичность: формат применяется только к визуальному отображению, но не меняет фактическое значение ячейки. Если вам нужно использовать название месяца в дальнейших расчётах (например, для фильтрации или формул), этот способ не сработает.
- 🔹 Ограниченная гибкость: невозможно комбинировать месяц с другими текстами (например, «Отчёт за апрель 2026») или динамически изменять формат в зависимости от условий.
- 🔹 Проблемы с экспортом: при копировании данных в другие программы (например, Google Sheets или базы данных) форматирование может сбиться, и вместо названия месяца отобразится исходная дата.
Кроме того, стандартные форматы даты зависят от языковых настроек системы. Если ваш Excel настроен на английский язык, то вместо «май» вы получите «May», что не всегда удобно для русскоязычных отчётов.
Способ 1: Функция ТЕКСТ() — простейшее решение
Самый универсальный и понятный метод — использование функции ТЕКСТ(). Она преобразует дату в текстовый формат согласно заданному шаблону. Синтаксис:
=ТЕКСТ(дата; "формат")
Для извлечения названия месяца подходят следующие форматы:
| Формат | Пример результата | Описание |
|---|---|---|
"мммм" |
январь | Полное название месяца на языке системы |
"ммм" |
янв | Сокращённое название (3 буквы) |
"mmmm" (английская локаль) |
January | Полное название на английском |
"[$-ru-RU]мммм" |
январь (принудительно русский) | Явное указание локали для русского языка |
Примеры использования:
- 📌
=ТЕКСТ(A1; "мммм")→ вернёт «февраль» для даты01.02.2026. - 📌
=ТЕКСТ(СЕГОДНЯ(); "[$-en-US]mmmm")→ вернёт текущий месяц на английском, независимо от настроек Excel.
⚠️ Внимание: Если функция возвращает ошибку#ЗНАЧ!, проверьте, что исходная ячейка действительно содержит дату (а не текст, который выглядит как дата). ИспользуйтеДАТАЗНАЧ()для преобразования:=ТЕКСТ(ДАТАЗНАЧ("01.05.2026"); "мммм").
Способ 2: Функция МЕСЯЦ() + ВЫБОР() — для гибких решений
Если вам нужно не просто отобразить месяц, а использовать его в логических операциях (например, присваивать бонусы за определённые месяцы), комбинация МЕСЯЦ() + ВЫБОР() станет идеальным решением. Этот метод позволяет:
- 🔄 Динамически изменять вывод в зависимости от условий.
- 🌍 Работать с любыми языками, даже если они не поддерживаются локалью Excel.
- 📊 Интегрировать результат в сложные формулы (например,
СУММЕСЛИ).
Базовый синтаксис:
=ВЫБОР(МЕСЯЦ(дата); "январь"; "февраль"; "март"; ...; "декабрь")
Пример с сокращёнными названиями:
=ВЫБОР(МЕСЯЦ(A1); "янв"; "фев"; "мар"; "апр"; "май"; "июн"; "июл"; "авг"; "сен"; "окт"; "ноя"; "дек")
Преимущество этого способа — полный контроль над выводом. Например, вы можете заменить названия месяцев на кварталы:
=ВЫБОР(МЕСЯЦ(A1); "Квартал 1"; "Квартал 1"; "Квартал 1"; "Квартал 2"; ...)
⚠️ Внимание: Функция ВЫБОР() чувствительна к регистру. Если вы укажете названия месяцев с ошибками (например, «январЬ» вместо «январь»), формула будет работать, но результат может выглядеть некорректно в отчётах.
Убедитесь, что в функции перечислены все 12 месяцев|Проверьте регистр названий (особенно для русского языка)|Удостоверьтесь, что исходная ячейка содержит дату, а не текст|Тестируйте формулу на крайних значениях (январь и декабрь)-->
Способ 3: Динамические массивы (Excel 365 и 2021)
В современных версиях Excel (начиная с Office 365 и Excel 2021) появилась поддержка динамических массивов, которые позволяют извлекать названия месяцев без повторного ввода списка. Например, можно создать единый массив с названиями и ссылаться на него по номеру месяца:
Шаг 1. Создайте на листе или в Именованном диапазоне список месяцев (например, в ячейках D1:D12):
январь
февраль
март
...
декабрь
Шаг 2. Используйте функцию ИНДЕКС() для извлечения нужного месяца:
=ИНДЕКС(D1:D12; МЕСЯЦ(A1))
Для сокращённых названий можно использовать ЛЕВСИМВ():
=ЛЕВСИМВ(ИНДЕКС(D1:D12; МЕСЯЦ(A1)); 3)
Преимущества этого метода:
- 🔄 Централизованное управление: при изменении названий в списке (например, на английские) все формулы обновятся автоматически.
- 📈 Масштабируемость: легко добавить дополнительные данные (например, кварталы или сезонность) в тот же диапазон.
- 🛠 Гибкость: можно использовать не только текст, но и цвета, иконки или даже гиперссылки.
Как создать именованный диапазон для месяцев?
1. Выделите ячейки с названиями месяцев (например, D1:D12).
2. Перейдите на вкладку Формулы → Присвоить имя.
3. Введите имя (например, МесяцаПолные) и нажмите OK.
4. Теперь в формулах можно использовать =ИНДЕКС(МесяцаПолные; МЕСЯЦ(A1)).
Способ 4: Пользовательская функция на VBA
Если вы работаете с большими объёмами данных или нуждаетесь в уникальном формате (например, «1-й квартал: январь»), стоит рассмотреть создание пользовательской функции на VBA. Это позволит:
- 🔧 Настраивать вывод под специфические требования (например, добавлять падежные окончания: «за январём»).
- 🚀 Обрабатывать массивы данных в разы быстрее, чем стандартные формулы.
- 🌐 Работать с несколькими языками одновременно (например, выводить месяц на русском и английском в одной ячейке).
Пример кода для функции, возвращающей месяц на русском в родительном падеже (например, «января»):
Function МесяцРодительный(дта As Date) As String
Dim месяцы(1 To 12) As String
месяцы(1) = "января": месяцы(2) = "февраля": месяцы(3) = "марта"
месяцы(4) = "апреля": месяцы(5) = "мая": месяцы(6) = "июня"
месяцы(7) = "июля": месяцы(8) = "августа": месяцы(9) = "сентября"
месяцы(10) = "октября": месяцы(11) = "ноября": месяцы(12) = "декабря"
МесяцРодительный = месяцы(Month(дта))
End Function
После добавления этого кода в редактор VBA (Alt + F11) функцию можно использовать как стандартную:
=МесяцРодительный(A1)
⚠️ Внимание: Пользовательские функции VBA работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может выдавать предупреждение о безопасности — убедитесь, что источник файла надёжен.
Способ 5: Power Query для массовой обработки
Если вам нужно извлечь названия месяцев из тысяч строк данных (например, при импорте из внешних источников), ручное применение формул станет неэффективным. В этом случае поможет инструмент Power Query (доступен в Excel 2016 и новее).
Алгоритм действий:
- Выделите исходные данные и перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query выделите столбец с датами, затем выберите
Преобразовать → Столбец даты → Месяц → Название. - Укажите нужный формат (полное или сокращённое название) и язык.
- Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества Power Query:
- ⚡ Автоматизация: один раз настроенный запрос можно обновлять одним кликом при изменении исходных данных.
- 📊 Гибкость: можно одновременно извлекать месяц, день недели, квартал и другие компоненты даты.
- 🔄 Интеграция: поддерживает соединение с SQL, JSON, XML и другими источниками.
Распространённые ошибки и их решения
Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот топ-5 ошибок и способы их исправления:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! в функции ТЕКСТ() |
Ячейка содержит текст, а не дату | Используйте ДАТАЗНАЧ() или измените формат ячейки на «Дата» |
| Месяц на английском вместо русского | Языковые настройки Excel или системы | Явно укажите локаль: ТЕКСТ(A1; "[$-ru-RU]мммм") |
Функция ВЫБОР() возвращает неверный месяц |
Номер месяца в формуле не соответствует порядку в списке | Проверьте, что январь — это 1-й элемент, февраль — 2-й и т. д. |
| Дата отображается как число (например, 45341) | Ячейка имеет общий формат, а не «Дата» | Измените формат ячейки или используйте =ДАТА(год; месяц; день) |
#ИМЯ? при использовании VBA-функции |
Макросы отключены или файл не сохранён как .xlsm |
Включите макросы в Файл → Параметры → Центр управления безопасностью |
Если ни один из способов не сработал, проверьте:
- 🔍 Формат исходных данных: иногда даты импортируются как текст (например, из CSV). Используйте
ТЕКСТ.ПОСЛЕ()илиПОИСК()для очистки. - 📅 Региональные настройки: в некоторых локалях Excel использует точку вместо запятой в формулах. Замените
;на,.
FAQ: Частые вопросы по извлечению месяца из даты
Можно ли получить название месяца на украинском или другом языке?
Да, для этого нужно явным образом указать локаль в функции ТЕКСТ(). Например, для украинского:
=ТЕКСТ(A1; "[$-uk-UA]мммм")
Если нужной локали нет в Excel, используйте функцию ВЫБОР() с ручным вводом названий.
Как извлечь месяц из даты в формате "2026-05-15" (ISO)?
Excel автоматически распознаёт такой формат как дату. Используйте:
=ТЕКСТ(A1; "мммм")
Если Excel воспринимает значение как текст, предварительно преобразуйте его:
=ТЕКСТ(ДАТАЗНАЧ(A1); "мммм")
Можно ли сделать так, чтобы месяц отображался с заглавной буквы?
Да, используйте комбинацию функций ПРОПИСН() и ЛЕВСИМВ():
=ПРОПИСН(ЛЕВСИМВ(ТЕКСТ(A1; "мммм"); 1)) & СТРОЧН(ПРАВСИМВ(ТЕКСТ(A1; "мммм"); ДЛСТР(ТЕКСТ(A1; "мммм"))-1))
Или проще — через ВЫБОР() с уже правильно оформленными названиями.
Как извлечь месяц из даты в Google Sheets?
В Google Таблицах используйте аналогичные функции, но с английским синтаксисом:
=TEXT(A1; "mmmm")
Для русского языка:
=CHOSE(MONTH(A1); "январь"; "февраль"; ...; "декабрь")
Почему функция МЕСЯЦ() возвращает число, а не название?
Функция МЕСЯЦ() всегда возвращает номер месяца (от 1 до 12). Чтобы получить название, комбинируйте её с ВЫБОР() или ТЕКСТ().