Почему извлечение месяца и года из даты — ключевая задача в Excel
Работа с датами в Microsoft Excel часто требует разделения компонентов — дня, месяца, года — для анализа, группировки или визуализации данных. Например, при составлении отчётов по кварталам, анализе сезонных продаж или создании динамических дашбордов. Извлечение месяца и года из полной даты (например, 15.03.2026 → март 2026) позволяет:
— Сортировать данные по временным периодам без учёта дней;
— Строить сводные таблицы с группировкой по месяцам или годам;
— Автоматизировать создание отчётов с динамическими заголовками (например, "Отчёт за апрель 2026").
В этой статье разберём 5 методов — от базовых функций до продвинутых инструментов, — а также сравним их эффективность. Вы узнаете, какой способ выбрать для одноразовой задачи, а какой подойдёт для обработки тысяч строк.
Метод 1: Функции МЕСЯЦ() и ГОД() — просто и быстро
Самый очевидный способ — использовать встроенные функции МЕСЯЦ() и ГОД(). Они возвращают числовые значения, которые потом можно отформатировать как текст или использовать в расчётах.
Пример формулы для ячейки A1 с датой 15.03.2026:
=МЕСЯЦ(A1) // Вернёт 3 (март)
=ГОД(A1) // Вернёт 2026
Чтобы получить текстовое название месяца (например, "март" вместо "3"), комбинируйте МЕСЯЦ() с функцией ТЕКСТ():
=ТЕКСТ(A1; "мммм") // "март"
=ТЕКСТ(A1; "ммм") // "мар"
- ✅ Плюсы: не требует знаний VBA, работает во всех версиях Excel.
- ❌ Минусы: возвращает отдельные значения (месяц и год в разных ячейках).
- 🔄 Альтернатива: для объединения месяца и года в одну ячейку используйте
=ТЕКСТ(A1; "мммм yyyy").
Метод 2: Функция ТЕКСТ() — гибкое форматирование
Функция ТЕКСТ() позволяет извлечь месяц и год в любом текстовом формате одной формулой. Это удобно, если нужно получить результат типа "март 2026" или "03.2026" в одной ячейке.
Синтаксис:
=ТЕКСТ(дата; "формат")
Популярные форматы для месяца и года:
| Формат | Пример результата | Описание |
|---|---|---|
"мм.yyyy" | 03.2026 | Месяц и год через точку |
"мммм yyyy" | март 2026 | Полное название месяца |
"ммм-yy" | мар-24 | Сокращённое название + последний год |
"yyyy-мм" | 2026-03 | Формат для сортировки (ISO) |
⚠️ Внимание: ФункцияТЕКСТ()возвращает текст, а не число. Если вам нужен числовой результат для дальнейших вычислений, используйтеМЕСЯЦ()иГОД()отдельно.
Пример объединения с другими данными:
=ТЕКСТ(A1; "мммм") & " " & ГОД(A1) & " г." // "март 2026 г."
☑️ Подготовка данных перед использованием ТЕКСТ()
Метод 3: Power Query — обработка больших массивов
Если вам нужно извлечь месяц и год из тысяч строк (например, в отчётах по продажам или логам), ручное применение формул займёт много времени. В этом случае поможет Power Query — инструмент для преобразования данных, доступный в Excel 2016+ и Microsoft 365.
Пошаговая инструкция:
- Выделите таблицу с датами → перейдите на вкладку
Данные→Из таблицы/диапазона. - В открывшемся редакторе Power Query выделите столбец с датами →
Преобразовать→Дата/время→Дата(если формат не распознан автоматически). - Добавьте новый столбец:
Добавить столбец→Извлечь→Месяц→Название месяца. - Повторите шаг 3 для извлечения года:
Извлечь→Год. - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества Power Query:
- 🔄 Обрабатывает миллионы строк без замедления.
- 📊 Сохраняет шаги преобразования — при обновлении исходных данных результат пересчитывается автоматически.
- 🔗 Позволяет объединять извлечение месяца/года с другими операциями (фильтрация, замена значений).
⚠️ Внимание: Если после загрузки данные в столбцах с месяцем и годом отображаются как даты (например,01.03.1900вместо "март"), измените формат ячеек наОбщийилиТекстовый.
Как автоматизировать обновление данных в Power Query?
После загрузки данных в Excel на вкладке "Данные" появится группа "Запросы и подключения". Нажмите "Обновить все", чтобы пересчитать результаты при изменении исходной таблицы. Можно также настроить автоматическое обновление по расписанию (в Excel 365).
Метод 4: Макросы VBA — для повторяющихся задач
Если вы регулярно работаете с датами и хотите автоматизировать извлечение месяца и года, напишите простой макрос на VBA. Это ускорит процесс, особенно если нужно обработать десятки файлов.
Пример кода для создания нового столбца с месяцем и годом:
Sub ExtractMonthYear()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Dim i As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Предполагаем, что даты в столбце A
' Добавляем заголовки для новых столбцов
ws.Range("B1").Value = "Месяц"
ws.Range("C1").Value = "Год"
ws.Range("D1").Value = "Месяц и год"
' Обрабатываем каждую строку
For i = 2 To lastRow
ws.Cells(i, 2).Value = Month(ws.Cells(i, 1).Value) ' Месяц (число)
ws.Cells(i, 3).Value = Year(ws.Cells(i, 1).Value) ' Год
ws.Cells(i, 4).Value = Format(ws.Cells(i, 1).Value, "mmmm yyyy") ' Текстовый формат
Next i
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос (
F5) или назначьте его на кнопку на листе.
Преимущества VBA:
- ⚡ Скорость: обрабатывает данные быстрее, чем формулы в больших таблицах.
- 🔧 Гибкость: можно модифицировать код для специфичных задач (например, извлекать квартал или недели).
- 📁 Многофайловая обработка: макросом можно обработать все файлы в папке.
⚠️ Внимание: Перед запуском макроса сохраните файл в формате.xlsm(с поддержкой макросов) и включите их выполнение в настройках безопасности Excel (Файл → Параметры → Центр управления безопасностью).
Метод 5: Динамические массивы (Excel 365) — современный подход
В Excel 365 и Excel 2021 появились динамические массивы — функции, которые автоматически заполняют несколько ячеек результатом. Для извлечения месяца и года удобно использовать комбинацию ТЕКСТ() с ВЫБРАТЬСТОЛБЕЦ() или ФИЛЬТР().
Пример: извлечь месяц и год из диапазона A2:A100 в виде таблицы:
=ТЕКСТ(A2:A100; {"мммм"; "yyyy"})
Эта формула вернёт два столбца: первый с названиями месяцев, второй с годами.
Для объединения месяца и года в одном столбце:
=ТЕКСТ(A2:A100; "мммм yyyy")
Преимущества динамических массивов:
- 🔄 Автоматически расширяются при добавлении новых данных.
- 📌 Не требуют ручного протягивания формулы.
- 🔗 Легко интегрируются с другими функциями массивов (например,
СОРТ()илиУНИК()).
Ограничение: работает только в Excel 365 и Excel 2021. В более ранних версиях используйте методы 1–4.
Сравнение методов: какой выбрать?
Выбор метода зависит от версии Excel, объёма данных и цели. Ниже таблица сравнения:
| Метод | Сложность | Скорость | Автоматизация | Подходит для |
|---|---|---|---|---|
Функции МЕСЯЦ()/ГОД() | ⭐ | Средняя | Нет | Малых таблиц, разовых задач |
Функция ТЕКСТ() | ⭐⭐ | Высокая | Нет | Форматированного вывода (например, "март 2026") |
| Power Query | ⭐⭐⭐ | Очень высокая | Да | Больших наборов данных, регулярных отчётов |
| Макросы VBA | ⭐⭐⭐⭐ | Мгновенно | Да | Повторяющихся задач, обработки множества файлов |
| Динамические массивы | ⭐⭐ | Высокая | Частично | Excel 365/2021, динамических дашбордов |
Рекомендации:
- 📌 Для одноразовых задач используйте
ТЕКСТ()илиМЕСЯЦ()/ГОД(). - 📊 Для отчётов с группировкой по месяцам/годам — Power Query.
- 🔄 Для автоматизации рутинных операций — VBA.
- 🚀 Для Excel 365 — динамические массивы.
Типичные ошибки и как их избежать
При извлечении месяца и года пользователи часто сталкиваются с проблемами. Вот самые распространённые:
- Дата хранится как текст.
Если ячейка содержит текст (например,
"15.03.2026"вместо даты), функцииМЕСЯЦ()иГОД()вернут ошибку#ЗНАЧ!. Решение: преобразуйте текст в дату с помощьюДАТАЗНАЧ()илиТЕКСТ.ПОСЛЕ()(в новых версиях Excel). - Неправильный формат ячейки.
Если после применения
ТЕКСТ()результат отображается как дата (например,45345вместо "март 2026"), измените формат ячейки наТекстовый. - Ошибки в Power Query.
Если при загрузке данных месяц отображается как число (1–12), а не как название, добавьте шаг преобразования:
Добавить столбец → Пользовательский столбецс формулой= Date.MonthName([Дата]).
⚠️ Внимание: В некоторых локалях Excel (например, английской) названия месяцев в функцииТЕКСТ()будут на английском ("March" вместо "март"). Чтобы исправить это, измените языковые настройки Excel или используйте формулу=ВЫБРАТЬ(МЕСЯЦ(A1); "январь"; "февраль"; ...; "декабрь").
Как проверить, распознаётся ли ячейка как дата?
Выделите ячейку и посмотрите на строку формул. Если там отображается число (например, 45345), а не дата, значит Excel хранит значение как число дней с 1900 года. Используйте Формат ячеек → Дата, чтобы исправить.
FAQ: Ответы на частые вопросы
Можно ли извлечь месяц и год без формул?
Да, с помощью Power Query или текста по столбцам:
- Выделите столбец с датами →
Данные→Текст по столбцам. - Выберите
С разделителями→ укажите разделитель (например, точка для15.03.2026). - На шаге формата столбцов выберите
Дата: МДГ.
Этот метод подходит для дат в формате ДД.ММ.ГГГГ.
Как извлечь квартал из даты?
Используйте формулу:
=ОКРУГЛВВЕРХ(МЕСЯЦ(A1)/3; 0)
Или для текстового вывода (например, "Q1 2026"):
="Q" & ОКРУГЛВВЕРХ(МЕСЯЦ(A1)/3; 0) & " " & ГОД(A1)
Почему функция ТЕКСТ() возвращает англоязычные месяца?
Это зависит от языковых настроек Excel. Чтобы получить месяца на русском:
- Перейдите в
Файл → Параметры → Язык. - Добавьте русский как язык редактирования и установите его по умолчанию.
- Перезапустите Excel.
Альтернатива — использовать ВЫБРАТЬ() с ручным указанием названий месяцев.
Как извлечь месяц и год из даты в Google Таблицах?
В Google Sheets используйте те же функции, но с английскими названиями:
=MONTH(A1) // Месяц (число)
=YEAR(A1) // Год
=TEXT(A1; "mmmm yyyy") // "март 2026"
Для русскоязычных названий месяцев добавьте функцию =ARRAYFORMULA(CHOOSECOLS(SPLIT(TEXT(A1:A; "mmmm yyyy"); " "); 1; 2)).
Можно ли извлечь месяц и год с учётом локали (например, украинской или казахской)?
Да, но потребуется дополнительная настройка:
- Для
ТЕКСТ(): измените языковые настройки Excel на нужную локаль. - Для VBA: используйте
Format(date; "mmmm"; vbMonday; vbUseSystemDayOfWeek)с указанием локали. - Для Power Query: добавьте пользовательский столбец с функцией
Date.MonthName()и ручным маппингом названий.
Пример для украинского языка в VBA:
Format(ws.Cells(i, 1).Value, "mmmm", vbUkrainian)