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

Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Часто требуется не просто хранить даты в ячейках, а выделять из них отдельные компоненты: день, месяц или год. Особенно актуально извлечение месяца и года — например, для группировки данных по периодам, создания отчётов или построения динамических диаграмм.

Многие пользователи сталкиваются с трудностями: какие функции использовать? Как избежать ошибок при преобразовании форматов? Эта статья поможет разобраться в нюансах и выбрать оптимальный способ — от простых формул до автоматизации через Power Query и VBA. Мы рассмотрим 5 рабочих методов, каждый с примерами и пояснениями, чтобы вы могли применить их к своим данным независимо от версии Excel (2010, 2016, 2019, 365 или Excel Online).

Прежде чем переходить к практике, важно понять, как Excel хранит даты. Внутри программы любая дата — это число, где 1 соответствует 1 января 1900 года. Например, дата 15.05.2023 в формате числа будет 45046. Это знание поможет избежать ошибок при работе с функциями.

Если вы новичок, начните с базовых функций МЕСЯЦ() и ГОД(). Опытным пользователям пригодятся комбинации с ТЕКСТ() или Power Query для обработки больших массивов данных. А для полной автоматизации мы покажем, как написать простой макрос на VBA.

1. Базовый способ: функции МЕСЯЦ и ГОД

Самый простой метод — использовать встроенные функции МЕСЯЦ() и ГОД(). Они возвращают числовые значения месяца (от 1 до 12) и года (например, 2023) соответственно.

Пример:

=МЕСЯЦ(A1)  // Вернёт номер месяца (например, 5 для мая)

=ГОД(A1) // Вернёт год (например, 2023)

Чтобы получить название месяца (не номер), комбинируйте МЕСЯЦ() с функцией ТЕКСТ():

=ТЕКСТ(A1; "ММММ")  // Полное название (например, "май")

=ТЕКСТ(A1; "МММ") // Сокращённое (например, "май")

  • Плюсы: Простота, работает во всех версиях Excel.
  • Минусы: Возвращает только числовые значения (для месяца) или требует дополнительной функции для текстового формата.
⚠️ Внимание: Если в ячейке A1 хранится текст (например, "15.05.2023" как строка), функции МЕСЯЦ() и ГОД() вернут ошибку #ЗНАЧ!. Преобразуйте данные в формат даты с помощью ДАТАЗНАЧ():
=МЕСЯЦ(ДАТАЗНАЧ(A1))

2. Функция ТЕКСТ: гибкое форматирование

Функция ТЕКСТ() позволяет извлечь месяц и год в любом текстовом формате. Это удобно, если нужно получить результат в виде "май 2023" или "05.2023".

Синтаксис:

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

Примеры форматов:

ФорматПример результатаОписание
"ММ.ГГГГ"05.2023Месяц и год через точку
"ММММ ГГГГ"май 2023Полное название месяца
"МММ-ГГ"май-23Сокращённое название и год
"М;Г"5;2023Числовые значения через точку с запятой

Практический пример:

=ТЕКСТ(A1; "ММММ ГГГГ")  // Результат: "май 2023"
  • 📅 Когда использовать: Для создания отчётов с читаемыми датами.
  • 🔄 Альтернатива: Комбинация МЕСЯЦ() + ГОД() с конкатенацией (&").
📊 Какой формат месяца и года вы чаще используете в отчётах?
Числовой (05.2023)
Текстовый (май 2023)
Сокращённый (май-23)
Другой

3. Извлечение месяца и года в отдельные столбцы

Если нужно разделить дату на месяц и год в разных ячейках, используйте комбинацию функций с ссылкой на исходную дату.

Пример:

=МЕСЯЦ(A1)   // Ячейка B1 — номер месяца

=ГОД(A1) // Ячейка C1 — год

=ТЕКСТ(A1; "ММММ") // Ячейка D1 — название месяца

Для автоматизации процесса:

1. Выделите диапазон рядом с датами.

2. Введите формулу для первой ячейки (например, =МЕСЯЦ(A1)).

3. Нажмите Ctrl+Enter, чтобы применить её ко всем выделенным ячейкам.

⚠️ Внимание: При копировании формул убедитесь, что ссылки на ячейки (A1, A2 и т.д.) относительные (без знака $). Иначе все ячейки будут ссылаться на A1.

Проверьте формат ячеек с датами (должен быть "Дата", а не "Текст" или "Общий")

Удалите лишние пробелы в ячейках (используйте СЖПРОБЕЛЫ())

Преобразуйте текстовые даты в формат даты (ДАТАЗНАЧ())

Создайте запасные столбцы для результатов-->

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

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

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

1. Выделите диапазон с датами.

2. Перейдите на вкладку ДанныеИз таблицы/диапазона (или Получить данные → Из таблицы/диапазона).

3. В открывшемся редакторе Power Query выделите столбец с датами.

4. На вкладке Добавить столбец выберите:

- Дата → Месяц → Название месяца (или Номер месяца).

- Дата → Год → Год.

5. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Преимущества метода:

- Обработка миллионов строк без замедления.

- Возможность объединения данных из нескольких источников.

- Автоматическое обновление при изменении исходных данных.

Как обновить данные после изменения исходного диапазона?

Щёлкните правой кнопкой по таблице с результатами Power Query и выберите Обновить. Если данные подгружаются из внешнего источника (например, SQL или CSV), нажмите Данные → Обновить все.

5. VBA: автоматизация для опытных пользователей

Если вам нужно динамически извлекать месяц и год с дополнительной логикой (например, проверкой на корректность даты), напишите макрос на VBA.

Пример кода:

Sub ExtractMonthYear()

Dim rng As Range

Dim cell As Range

Dim monthCol As Integer, yearCol As Integer

' Указываем столбцы для результатов (B — месяц, C — год)

monthCol = 2

yearCol = 3

' Обрабатываем все заполненные ячейки в столбце A

For Each cell In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)

If IsDate(cell.Value) Then

Cells(cell.Row, monthCol).Value = Month(cell.Value)

Cells(cell.Row, yearCol).Value = Year(cell.Value)

Else

Cells(cell.Row, monthCol).Value = "Ошибка"

Cells(cell.Row, yearCol).Value = "Ошибка"

End If

Next cell

End Sub

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

1. Нажмите Alt+F11, чтобы открыть редактор VBA.

2. Вставьте код в новый модуль (Insert → Module).

3. Запустите макрос нажатием F5.

  • 🔧 Настройка: Измените monthCol и yearCol, чтобы указать нужные столбцы для вывода.
  • 🛡️ Защита от ошибок: Код проверяет, является ли значение датой (IsDate), и выводит "Ошибка" для некорректных данных.
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии файла Excel может заблокировать выполнение макросов — разрешите их в настройках безопасности.

6. Динамические массивы (Excel 365 и 2021)

В последних версиях Excel (365 и 2021) появились динамические массивы, которые позволяют извлекать месяц и год сразу для всего столбца без протягивания формул.

Пример:

=ТЕКСТ(A1:A100; "ММММ ГГГГ")

Эта формула автоматически заполнит столько строк, сколько есть данных в диапазоне A1:A100.

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

- Нет нужды протягивать формулу вниз.

- Автоматическое обновление при добавлении новых строк.

- Компактность: одна формула вместо сотен копий.

Динамические массивы — единственный способ в Excel, который позволяет обрабатывать данные в реальном времени без VBA или Power Query.

7. Ошибки и их решение

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

ОшибкаПричинаРешение
#ЗНАЧ!Ячейка содержит текст, а не дату.Используйте ДАТАЗНАЧ() или преобразуйте формат ячейки.
#ИМЯ?Опечатка в названии функции.Проверьте синтаксис (например, МЕСЯЦ, а не MEСЯЦ).
######Столбец слишком узкий для отображения.Расширьте столбец или измените формат ячейки.
Некорректный месяц (например, 13)Дата введена неправильно (например, 32.01.2023).Исправьте исходную дату или используйте ЕСЛИОШИБКА().

Как избежать ошибок:

- Всегда проверяйте формат ячеек (Формат ячеек → Дата).

- Используйте функцию ЕСЛИОШИБКА() для обработки исключений:

=ЕСЛИОШИБКА(МЕСЯЦ(A1); "Ошибка")

FAQ: Частые вопросы

Можно ли извлечь месяц и год из даты в формате "DD-MM-YYYY" (текст)?

Да, но сначала преобразуйте текст в дату с помощью ДАТАЗНАЧ() или ПОДСТАВИТЬ() + ДАТА(). Пример:

=ДАТАЗНАЧ(ПОДСТАВИТЬ(A1; "-"; "."))

Если формат всегда одинаковый, используйте:

=ДАТА(ПРАВСИМВ(A1;4); ПСТР(A1;4;2); ЛЕВСИМВ(A1;2))
Как получить квартал вместо месяца?

Используйте функцию ОКРВВЕРХ() или ВЫБОР():

=ОКРВВЕРХ(МЕСЯЦ(A1)/3; 0)  // Вернёт номер квартала (1-4)

Или с текстом:

=ВЫБОР(ОКРВВЕРХ(МЕСЯЦ(A1)/3;0); "Q1"; "Q2"; "Q3"; "Q4")
Почему функция ГОД возвращает 1905 вместо 2023?

Это происходит, если в настройках Excel установлена система дат 1904 (вместо стандартной 1900). Чтобы исправить:

  1. Перейдите в Файл → Параметры → Дополнительно.
  2. В разделе При пересчёте этой книги снимите галочку с Использовать систему дат 1904.
  3. Сохраните и перезапустите файл.
Как извлечь месяц и год из даты в Google Таблицах?

В Google Sheets используйте те же функции, но с английским синтаксисом:

=MONTH(A1)   // Месяц

=YEAR(A1) // Год

=TEXT(A1; "MMMM YYYY") // Текстовый формат

Для названия месяца на русском:

=TEXT(A1; "ММММ ГГГГ")
Можно ли извлечь месяц и год без формул?

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

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

Минус метода: месяц и год будут в отдельных столбцах, а не в нужном формате.