Как в Excel вывести месяц и год из даты: формулы, Power Query и VBA

Почему правильное отображение месяца и года в Excel критично для анализа данных

Работаете с датами в Microsoft Excel и нужно вытащить только месяц и год для отчётов, графиков или фильтрации? Эта задача кажется простой, но скрывает подводные камни: неправильный формат ячеек, ошибки при копировании формул или неверная интерпретация функций могут исказить результаты. Например, функция МЕСЯЦ() вернёт число от 1 до 12, а не название месяца, что не всегда удобно для презентаций.

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

  • 📅 Преобразовать дату в текстовый формат "месяц год" (например, "январь 2026")
  • 📊 Использовать результаты для сводных таблиц и графиков
  • ⚡ Автоматизировать процесс для тысяч строк данных
  • 🔄 Динамически обновлять месяц и год при изменении исходной даты

Особое внимание уделим разнице между функциями ТЕКСТ() и ФОРМУЛАТЕКСТ() — ошибка в выборе может привести к тому, что ваши данные превратятся в нечитаемые символы при экспорте в другие программы.

Способ 1: Функция ТЕКСТ() — простой вывод месяца и года

Самый универсальный метод — использовать функцию ТЕКСТ(). Она преобразует дату в любой текстовый формат, включая комбинации месяца и года. Синтаксис:

=ТЕКСТ(дата; "формат")

Примеры форматов для месяца и года:

  • 📌 "мммм гггг" → "январь 2026"
  • 📌 "мм.гг" → "01.24" (короткий формат)
  • 📌 "[$-419]мммм гггг" → "январь 2026" на русском (важно для локализации!)

Пример формулы для ячейки A1 с датой 15.01.2026:

=ТЕКСТ(A1; "[$-419]мммм гггг")

Результат: "январь 2026".

⚠️ Внимание: Если в ячейке с датой стоит текст (например, "15 янв"), функция ТЕКСТ() вернёт ошибку #ЗНАЧ!. Перед использованием проверьте формат ячейки через Формат ячеек → Число → Дата.
📊 Какой формат месяца и года вы используете чаще?
Текстовый ("январь 2026")
Числовой (01.2026)
Краткий ("янв-24")
Другой

Способ 2: Комбинация МЕСЯЦ() + ГОД() — для вычислений

Если вам нужны отдельные числовые значения месяца и года (например, для фильтрации или математических операций), используйте функции МЕСЯЦ() и ГОД():

=МЕСЯЦ(A1)  // вернёт число от 1 до 12

=ГОД(A1) // вернёт полный год (например, 2026)

Чтобы объединить их в одну ячейку:

=МЕСЯЦ(A1) & "." & ГОД(A1)  // результат: "1.2026"

Для названия месяца добавьте функцию ВЫБОР():

=ВЫБОР(МЕСЯЦ(A1); "январь"; "февраль"; "март"; "апрель"; "май"; "июнь"; "июль"; "август"; "сентябрь"; "октябрь"; "ноябрь"; "декабрь") & " " & ГОД(A1)
ФормулаРезультат для 15.01.2026Тип данных
=МЕСЯЦ(A1)1Число
=ГОД(A1)2026Число
=ТЕКСТ(A1; "ммм")"янв"Текст
=ВЫБОР(МЕСЯЦ(A1); "янв"; "фев"; ...) & "-" & ГОД(A1)"янв-2026"Текст

Способ 3: Динамическое обновление с помощью ДАТАМЕС()

Если вам нужно автоматически обновлять месяц и год при изменении исходной даты (например, для отчётов "за прошлый месяц"), используйте комбинацию ДАТАМЕС() и СЕГОДНЯ():

=ТЕКСТ(ДАТАМЕС(СЕГОДНЯ(); -1); "[$-419]мммм гггг")

Эта формула вернёт название прошлого месяца и год (например, "декабрь 2023" в январе 2026).

Для текущего месяца:

=ТЕКСТ(СЕГОДНЯ(); "[$-419]мммм гггг")
⚠️ Внимание: Функция СЕГОДНЯ() пересчитывается при каждом открытии файла. Если вам нужна фиксированная дата (например, для архивных отчётов), замените её на конкретное значение (например, =ДАТА(2026;1;1)).

Ячейка с исходной датой имеет формат "Дата"|Формулы возвращают ожидаемый тип данных (текст/число)|Динамические формулы (с СЕГОДНЯ()) не используются для архивных данных|Проверены крайние случаи (1 января, 31 декабря)-->

Способ 4: Power Query — обработка больших массивов данных

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

  1. Выделите таблицу с датами → Данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите колонку с датой → Добавить столбец → Дата → Месяц → Название.
  3. Повторите для года: Добавить столбец → Дата → Год → Год.
  4. Объедините столбцы: выделите оба → Добавить столбец → Настраиваемый столбец → введите формулу [Месяц] & " " & [Год].

Преимущества Power Query:

  • 🔄 Автоматическое обновление при изменении исходных данных.
  • 📈 Обработка миллионов строк без замедления Excel.
  • 🔄 Возможность сохранения шагов для повторного использования.
Как обновить данные после изменений в Power Query?

После редактирования исходной таблицы нажмите в Excel Данные → Обновить все (или Обновить на ленте Power Query). Если данные не обновляются, проверьте связи: Данные → Запросы и соединения → Параметры загрузки.

Способ 5: VBA — автоматизация для повторяющихся задач

Если вам нужно ежедневно обрабатывать одни и те же отчёты, напишите макрос на VBA. Пример кода для добавления столбца "Месяц Год":

Sub AddMonthYear()

Dim ws As Worksheet

Dim rng As Range, cell As Range

Dim lastRow As Long

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Предполагаем, что даты в столбце A

' Добавляем заголовок нового столбца

ws.Range("B1").Value = "Месяц Год"

' Заполняем данные

For Each cell In ws.Range("A2:A" & lastRow)

If IsDate(cell.Value) Then

cell.Offset(0, 1).Value = Format(cell.Value, "mmmm yyyy")

Else

cell.Offset(0, 1).Value = "Некорректная дата"

End If

Next cell

' Форматируем новый столбец

ws.Columns("B:B").AutoFit

End Sub

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

  1. Нажмите Alt + F11Insert → Module.
  2. Вставьте код выше.
  3. Вернитесь в Excel и запустите макрос через View → Macros → AddMonthYear → Run.
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе код не выполнится. Также проверьте настройки безопасности: Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы (только для доверенных файлов!).

Способ 6: Условное форматирование для визуализации

Чтобы выделить ячейки с определённым месяцем или годом, используйте условное форматирование:

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило → Использовать формулу....
  3. Для выделения января 2026 введите формулу:
    =И(МЕСЯЦ(A1)=1; ГОД(A1)=2026)
  4. Задайте формат (например, зелёный фон) и нажмите ОК.

Примеры формул для других условий:

  • 📌 Текущий месяц: =МЕСЯЦ(A1)=МЕСЯЦ(СЕГОДНЯ())
  • 📌 Прошлый год: =ГОД(A1)=ГОД(СЕГОДНЯ())-1
  • 📌 Квартал 1: =И(МЕСЯЦ(A1)>=1; МЕСЯЦ(A1)<=3)

Ошибки и решения: почему формулы не работают

Даже опытные пользователи сталкиваются с проблемами при работе с датами. Вот топ-5 ошибок и их решения:

ОшибкаПричинаРешение
#ЗНАЧ! в функции ТЕКСТ() Ячейка содержит текст, а не дату Используйте ДАТАЗНАЧ() или измените формат ячейки на "Дата"
Некорректный месяц (например, "13") Опечатка в ручном вводе даты Проверьте данные с помощью =ДАТАГОД(A1) (должен вернуть 1900–9999)
Формула не обновляется Автоматический пересчёт отключён Нажмите Формулы → Вычислить или включите автоматический режим в Формулы → Параметры вычислений
Названия месяцев на английском Не указан локальный идентификатор Добавьте [$-419] в формат: =ТЕКСТ(A1; "[$-419]мммм")
Ошибка #ИМЯ? в VBA Отсутствует ссылка на библиотеку В редакторе VBA: Tools → References → поставьте галочку на Microsoft Excel XX.X Object Library

Если проблема не решена, проверьте:

  • 🔍 Региональные настройки Windows (влияют на формат дат).
  • 🔍 Версию Excel — в старых версиях (2010 и ранее) может не работать ТЕКСТ.В.ДАТУ().
  • 🔍 Наличие скрытых символов в ячейках (например, пробелов). Используйте =ПРОБЕЛЫ(A1) для очистки.

FAQ: Частые вопросы по работе с месяцем и годом в Excel

Как вывести месяц прописью на украинском/казахском/другом языке?

Используйте локальный идентификатор в функции ТЕКСТ():

  • Украинский: =ТЕКСТ(A1; "[$-422]мммм гггг") → "січень 2026"
  • Казахский: =ТЕКСТ(A1; "[$-43F]мммм гггг") → "қаңтар 2026"

Полный список идентификаторов: документация Microsoft.

Можно ли извлечь месяц и год без формул?

Да, с помощью текста по столбцам:

  1. Выделите столбец с датами.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите "С разделителями" → "Далее" → укажите разделитель (например, точка или пробел).
  4. На шаге 3 выберите формат столбца "Дата" и нужный вид (например, "МДГ").

Минус метода: даты превратятся в текст, и их нельзя будет использовать в вычислениях.

Как посчитать количество строк за конкретный месяц и год?

Используйте функцию СЧЁТЕСЛИМН():

=СЧЁТЕСЛИМН(диапазон_дат; ">="&ДАТА(2026;1;1); диапазон_дат; "<="&ДАТА(2026;1;31))

Для динамического диапазона (например, текущий месяц):

=СЧЁТЕСЛИМН(A:A; ">="&ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 1); A:A; "<="&КОНМЕСЯЦА(СЕГОДНЯ(); 0))
Почему функция ДАТАМЕС() возвращает неверный месяц?

Функция ДАТАМЕС() учитывает конец месяца. Например:

=ДАТАМЕС(ДАТА(2026;1;31); 1)

вернёт 29.02.2026 (последний день февраля), а не 31.02.2026 (которого не существует). Чтобы получить точную дату через N месяцев, используйте:

=ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; ДЕНЬ(A1))

Но это может привести к ошибке для дат вроде 31 марта + 1 месяц (31 апреля не существует).

Как экспортировать месяц и год в Word/PDF без искажений?

Проблема: при копировании в Word формулы превращаются в значения, а формат дат может измениться. Решения:

  • 📋 Специальная вставка: В Excel выделите данные → Копировать → в Word: Главная → Вставить → Специальная вставка → Текст (Unicode).
  • 📋 Экспорт в PDF: Файл → Экспорт → Создать PDF/XPS. Форматы дат сохранятся.
  • 📋 Преобразовать в значения: Выделите ячейки с формулами → КопироватьВставить значения (иконка "123" на ленте).