Если вам нужно в Excel сгенерировать столбец или строку с датами, распределенными по месяцам (например, первое число каждого месяца или полный календарь с указанием месяца), стандартное автозаполнение часто дает сбой. Проблема возникает, когда программа вместо последовательности 01.01.2026, 01.02.2026, 01.03.2026 начинает прибавлять дни (02.01.2026, 03.01.2026) или вовсе игнорирует формат даты. Это связано с настройками автозаполнения по умолчанию, которые ориентируются на последний измененный элемент ряда.
Решение зависит от задачи: для простого списка первых чисел месяцев хватит ручной правки маркера автозаполнения, а для динамических отчетов с группировкой по месяцам потребуются формулы ДАТАМЕС (EDATE) или ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА (EOMONTH). В этой статье разберем 5 рабочих методов — от базовых до продвинутых (включая Power Query и VBA), с примерами для календарей, финансовых моделей и аналитических дашбордов.
1. Базовое автозаполнение дат по месяцам (без формул)
Самый быстрый способ создать список дат с шагом в месяц — использовать встроенное автозаполнение Excel, но с корректировкой параметров. Метод подходит для статических списков (например, для создания оси времени в графике).
Алгоритм:
- 📅 Введите в первую ячейку (например,
A1) стартовую дату — например,01.01.2026. Убедитесь, что формат ячейки — Дата (не текст!). - 🖱️ Наведите курсор на правый нижний угол ячейки (появится черный крестик — маркер автозаполнения).
- 📥 Зажмите правую кнопку мыши и протяните маркер вниз на нужное количество строк. Отпустите кнопку — появится контекстное меню.
- 🔄 В меню выберите
Заполнить по месяцам(илиSeries... > Date unit: Monthв английской версии).
Если опция Заполнить по месяцам отсутствует в меню, значит Excel распознал ваши данные как текст. Проверьте формат ячейки (Главная > Формат > Формат ячеек > Дата) и повторите действие. Для английской версии путь: Home > Number Format > Short Date.
⚠️ Внимание: Автозаполнение по месяцам добавляет ровно 30 дней к каждой дате, а не переходит на первое число следующего месяца. Например, после31.01.2026будет02.03.2026(31.01 + 30 дней), а не01.02.2026. Для точного перехода на первый день месяца используйте методы из следующих разделов.
2. Формула ДАТАМЕС (EDATE) для динамических списков
Функция ДАТАМЕС (EDATE в английской версии) возвращает дату, отстоящую на заданное количество месяцев от начальной. Это идеальный инструмент для создания гибких календарей, где количество месяцев может меняться.
Синтаксис:
=ДАТАМЕС(нач_дата; кол_месяцев)
Пример: чтобы получить последовательность первых чисел месяцев на 2026 год, введите в A1 01.01.2026, а в A2:
=ДАТАМЕС(A1; 1)
Затем протяните формулу вниз. Результат:
| Ячейка | Формула | Результат |
|---|---|---|
| A1 | 01.01.2026 (вручную) | 01.01.2026 |
| A2 | =ДАТАМЕС(A1; 1) | 01.02.2026 |
| A3 | =ДАТАМЕС(A2; 1) | 01.03.2026 |
| A4 | =ДАТАМЕС(A3; 1) | 01.04.2026 |
Преимущество метода: если изменить дату в A1, все последующие значения обновятся автоматически. Чтобы получить список за прошлый или следующий год, достаточно поменять стартовую дату.
1. Убедитесь, что начальная дата введена как дата, а не текст
2. Используйте абсолютную ссылку на стартовую ячейку (например, $A$1), если хотите копировать формулу в другие столбцы
3. Для убывающей последовательности (обратный отсчет) используйте отрицательное число месяцев: =ДАТАМЕС(A1; -1)
4. Проверьте региональные настройки: в некоторых версиях Excel функция называется EDATE-->
3. Последний день месяца: функция ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА (EOMONTH)
Если вам нужны не первые, а последние дни месяцев (например, для финансовых отчетов с закрытием периода), используйте функцию ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА (EOMONTH). Она возвращает последний день месяца, отстоящего на заданное количество месяцев от начальной даты.
Синтаксис:
=ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА(нач_дата; кол_месяцев)
Пример: чтобы получить последние дни месяцев 2026 года, введите в A1 31.01.2026, а в A2:
=ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА(A1; 1)
Особенности функции:
- 📅 Корректно обрабатывает месяцы с разным количеством дней (например, после 31 января вернет 29 февраля 2026 года).
- 🔄 Можно использовать для создания динамических диапазонов (например, "за последние 6 месяцев").
- 📊 Полезна для построения графиков с группировкой по месяцам в Power Pivot.
⚠️ Внимание: В русских версиях Excel до 2016 года функцияПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦАможет отсутствовать. Альтернатива — формула массива:=ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; 0)Введите ее как формулу массива (
Ctrl+Shift+Enterв старых версиях).
4. Power Query: генерация дат по месяцам для больших наборов данных
Если вам нужно создать список дат по месяцам для тысяч строк (например, для исторического анализа за 10 лет), ручное автозаполнение или формулы будут неэффективны. В этом случае используйте Power Query — инструмент для преобразования данных, встроенный в Excel 2016+ и Office 365.
Пошаговая инструкция:
- Перейдите на вкладку
Данные(>Get Data > From Other Sources > Blank Query). - В редакторе Power Query введите в строку формул:
= {1..12}Это создаст список чисел от 1 до 12 (месяцы).
- Нажмите
Add Column > Custom Columnи введите формулу:= Date.From(DateTime.LocalNow().Year & "-" & [Column1] & "-01")Здесь
[Column1]— это сгенерированный список месяцев. - Удалите исходный столбец с числами, оставьте только столбец с датами.
- Нажмите
Close & Load— данные загрузятся на новый лист.
Преимущества метода:
- 🚀 Обрабатывает миллионы строк без лагов (в отличие от формул).
- 🔄 Легко обновляется при изменении исходных данных (например, смене года).
- 📊 Можно сразу добавить столбцы с названием месяца, квартала или года.
Как добавить название месяца в Power Query
1. Выделите столбец с датами.
2. Перейдите на вкладку Add Column > Date > Month > Name of Month.
3. Для русскоязычных названий используйте формулу:
= Date.ToText([Date], "MMMM", "ru-RU")
5. Макросы VBA для автоматизации
Если вам регулярно нужно генерировать даты по месяцам в разных файлах, имеет смысл записать макрос. Например, следующий код создает список первых чисел месяцев за текущий год в выделенном диапазоне:
Sub GenerateMonthlyDates()
Dim startDate As Date
Dim i As Integer
Dim rng As Range
' Начальная дата — первое число текущего года
startDate = DateSerial(Year(Date), 1, 1)
' Выделенный диапазон
Set rng = Selection
' Заполнение дат по месяцам
For i = 0 To 11
rng.Cells(i + 1, 1).Value = DateAdd("m", i, startDate)
rng.Cells(i + 1, 1).NumberFormat = "dd.mm.yyyy"
Next i
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert > Module). - Выделите диапазон на листе (например,
A1:A12). - Запустите макрос (
F5или черезView > Macros).
Для генерации дат за произвольный год измените строку:
startDate = DateSerial(2026, 1, 1) ' Замените 2026 на нужный год
Автозаполнение|Формулы (ДАТАМЕС/EOMONTH)|Power Query|Макросы VBA|Другой способ-->
6. Практическое применение: календарь, графики и сводные таблицы
Сгенерированные даты по месяцам можно использовать для:
| Задача | Пример применения | Инструмент Excel |
|---|---|---|
| Календарь проектов | Отметка дедлайнов по месяцам | Условное форматирование |
| Финансовые отчеты | Группировка доходов/расходов по месяцам | Сводные таблицы |
| Анализ продаж | Сравнение месячных показателей | Графики с накоплением |
| Планирование задач | Распределение этапов по месяцам | Диаграммы Ганта |
Пример для сводной таблицы:
- Создайте столбец с датами по месяцам (любым из описанных методов).
- Добавьте рядом столбец с данными (например, продажи).
- Выделите диапазон и создайте сводную таблицу (
Вставка > Сводная таблица). - Перетащите поле с датами в область
Строки, а данные — вЗначения. - Щелкните правой кнопкой по дате в сводной таблице и выберите
Группировать > Месяцы.
7. Типичные ошибки и как их избежать
При работе с датами по месяцам пользователи часто сталкиваются с следующими проблемами:
- 🗓️ Некорректный формат ячеек: Excel воспринимает даты как текст. Решение: выделите ячейки и примените формат
Дата(Ctrl+1 > Число > Дата). - 🔢 Ошибка #ЧИСЛО! в ДАТАМЕС: возникает, если количество месяцев превышает 60 или начальная дата некорректна. Проверьте аргументы функции.
- 📅 Смещение дней при автозаполнении: как упоминалось ранее, автозаполнение добавляет 30 дней, а не переходит на следующий месяц. Используйте
ДАТАМЕСдля точности. - 🔄 Не обновляются данные в Power Query: после изменения исходных данных нажмите
Данные > Обновить все.
Если даты отображаются как числа (например, 45292), это значит, что включен формат Общий. Чтобы исправить:
- Выделите ячейки.
- Нажмите
Ctrl+1(или правая кнопка >Формат ячеек). - Выберите категорию
Датаи укажите нужный формат (например,14.03.2012).
FAQ: Частые вопросы по работе с датами по месяцам
Как сделать список дат по месяцам с указанием названия месяца?
Используйте функцию ТЕКСТ (TEXT) вместе с ДАТАМЕС:
=ТЕКСТ(ДАТАМЕС(A1; 1); "mmmm yyyy")
Результат: январь 2026, февраль 2026 и т.д. Для английских названий замените "mmmm" на "[$-en-US]mmmm".
Можно ли создать список дат по месяцам с шагом в 2 месяца?
Да, в формуле ДАТАМЕС укажите шаг 2:
=ДАТАМЕС(A1; 2)
Для автозаполнения: протяните маркер за правый нижний угол с зажатой клавишей Ctrl (шаг увеличится в 2 раза).
Как в Excel получить количество дней между двумя датами по месяцам?
Используйте комбинацию функций:
=ДЕНЬ(ПОСЛЕДНИЙ_DЕНЬ_МЕСЯЦА(A1; 0))
Для расчета дней между двумя датами с разбивкой по месяцам потребуется более сложная формула или Power Query.
Почему при копировании формулы ДАТАМЕС даты не меняются?
Скорее всего, в формуле использована абсолютная ссылка (например, $A$1). Замените ее на относительную (A1) или смешанную ($A1).
Как в Excel 2010 создать даты по месяцам, если нет функции ДАТАМЕС?
Используйте альтернативную формулу:
=ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; ДЕНЬ(A1))
Для последнего дня месяца:
=ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; 1)-1