Как протянуть дни недели в Excel по вертикали: от автозаполнения до VBA

Если при протягивании маркера автозаполнения вниз Excel вместо последовательности "понедельник, вторник..." выдает числа или повторяет один и тот же день, проблема в формате ячейки. По умолчанию программа воспринимает текстовые дни недели как пользовательский формат даты, а не как независимые строки. Чтобы протянуть дни по вертикали корректно, нужно либо предварительно отформатировать ячейки как текст, либо использовать специальные приемы — от ручного ввода с маркером до автоматизации через Power Query.

В 90% случаев ошибка возникает из-за того, что пользователь начинает протягивать с ячейки, где день недели записан как результат формулы (например, =ТЕКСТ(A1;"dddd")) или как дата в формате "dddd". В этом случае Excel продолжает серию дат, а не текстовую последовательность. Решение зависит от задачи: нужны ли дни как статический список или как динамические значения, привязанные к конкретной дате.

Способ 1: Ручной ввод с маркером автозаполнения

Самый простой метод — ввести первые два дня недели в соседние ячейки, а затем протянуть маркер автозаполнения. Ключевое условие: ячейки должны быть отформатированы как текст до начала работы.

  • 📌 Выделите ячейку A1, введите понедельник и нажмите Enter.
  • 📌 В ячейку A2 введите вторник (обязательно с маленькой буквы, если хотите единообразие).
  • 📌 Выделите обе ячейки, наведите курсор на правый нижний угол выделения (появится черный крестик) и протяните вниз.
  • 📌 Если вместо дней появляются даты, нажмите на значок автозаполнения (маленький квадратик справа) и выберите Копировать ячейки.

Этот метод работает и для сокращенных названий ("пн", "вт"), но важно следить за регистром. Если в первой ячейке напишете "Понедельник" с заглавной, а во второй — "вторник" с маленькой, Excel не распознает последовательность.

Способ 2: Формулы для динамического списка

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

=ТЕКСТ(ДАТА(2023;1;1)+СТРОКА(A1)-1;"dddd")

Разберем конструкцию:

  • 📅 ДАТА(2023;1;1) — базовая дата (можно заменить на СЕГОДНЯ() для динамического списка).
  • 🔢 СТРОКА(A1)-1 — смещение по строкам (в A1 будет "понедельник", в A2 — "вторник" и т.д.).
  • 📝 "dddd" — формат отображения полного названия дня недели.

Чтобы список начинался с конкретного дня (например, со среды), добавьте смещение:

=ТЕКСТ(ДАТА(2023;1;4)+СТРОКА(A1)-1;"dddd")

Здесь ДАТА(2023;1;4) — это среда, 4 января 2023 года.

Как сделать список сокращенных дней (пн, вт, ср)

Используйте формат "ddd" вместо "dddd":

=ТЕКСТ(ДАТА(2023;1;1)+СТРОКА(A1)-1;"ddd")

Для русскоязычных сокращений ("пн" вместо "пон") может потребоваться замена через =ПОДСТАВИТЬ() или пользовательский формат.

Способ 3: Power Query для гибких списков

Если нужно создать список дней недели с дополнительными параметрами (например, с указанием номера недели или квартала), используйте Power Query. Этот метод подходит для Excel 2016 и новее.

  1. 🔹 Перейдите на вкладку ДанныеПолучить данныеИз других источниковПустой запрос.
  2. 🔹 В редакторе Power Query введите в строку формул:
    = {"пн", "вт", "ср", "чт", "пт", "сб", "вс"}
  3. 🔹 Нажмите Готово и загрузите данные в таблицу.

Преимущество Power Query — возможность комбинировать дни с другими данными. Например, создать таблицу, где каждой дате соответствует день недели, номер недели и квартал:

ДатаДень неделиНеделяКвартал
01.01.2026понедельник11
02.01.2026вторник11
08.01.2026понедельник21
01.04.2026понедельник142

Ручной ввод с маркером|Формулы|Power Query|Макросы (VBA)|Не знаю, выберу после прочтения-->

Способ 4: Макросы для автоматизации

Если списки дней недели нужны регулярно, запишите простой макрос. Например, этот код создает вертикальный список с текущего дня:

Sub ДниНедели()

Dim i As Integer

For i = 0 To 6

Cells(i + 1, 1).Value = Format(Date + i, "dddd")

Next i

End Sub

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

Sub ДниНеделиСПонедельника()

Dim i As Integer, StartDate As Date

StartDate = Date - Weekday(Date, vbMonday) + 1 ' Начало недели (понедельник)

For i = 0 To 6

Cells(i + 1, 1).Value = Format(StartDate + i, "dddd")

Next i

End Sub

Внимание на регионы! В русских версиях Excel названия дней выводятся на русском, но если у вас английская версия, используйте Format(Date + i, "dddd", vbMonday, vbUseSystemDayOfWeek) для корректного отображения.

Выделите ячейку, с которой должен начинаться список|Проверьте, что макросы разрешены (Файл → Параметры → Центр управления безопасностью)|Сохраните файл как .xlsm (с поддержкой макросов)|Запустите макрос через Alt+F8-->

Способ 5: Пользовательский формат для дат

Если исходные данные — это столбец с датами, а вам нужны только дни недели, примените пользовательский формат:

  1. 📅 Выделите ячейки с датами.
  2. 🔧 Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. 📝 В разделе Число выберите (все форматы) и введите:
    dddd

    для полного названия или

    ddd

    для сокращенного.

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

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

  • 📋 Скопируйте ячейки с форматом dddd.
  • 🔄 Вставьте как Значения (правая кнопка → Параметры вставкиЗначения).

Ошибки и решения

Если при протягивании дней недели возникают проблемы, проверьте эти моменты:

ПроблемаПричинаРешение
Вместо дней — числа (1, 2, 3...)Ячейки в формате "Общий" или "Числовой"Установите формат "Текстовый" до ввода данных
Повторяется один день (например, 7 раз "понедельник")Введена только одна ячейка перед протягиваниемВведите первые два дня (пн и вт), затем протягивайте
Дни на английском (Monday, Tuesday)Язык системы или Excel не русскийИспользуйте формулы с =ПОДСТАВИТЬ() или измените языковые настройки
Список начинается не с понедельникаФормула или макрос привязан к текущей датеДобавьте смещение (см. раздел про VBA)
⚠️ Внимание: В Excel Online и мобильной версии нет поддержки макросов и Power Query. Для этих платформ используйте только ручной ввод или формулы.

Дополнительные возможности

Рассмотрим нестандартные задачи с днями недели:

  • 🔄 Циклический список: Чтобы дни повторялись бесконечно (пн, вт, ср, пн, вт, ср...), используйте:
    =ВЫБОР(ОСТАТ(СТРОКА(A1)-1;3)+1;"пн";"вт";"ср")
  • 📊 Подсчет дней недели: Чтобы узнать, сколько раз в месяце выпадает понедельник:
    =СУММПРОИЗВ(--(ТЕКСТ(ДАТАМЕС(ДАТА(2026;1;1);СТРОКА(A1:A31)-1);"ddd")="пн"))
  • 🌐 Многоязычные списки: Для вывода дней на двух языках:
    =ТЕКСТ(ДАТА(2023;1;1)+СТРОКА(A1)-1;"dddd") & " (" & TEXT(DATE(2023,1,1)+ROW(A1)-1,"dddd";"en-us") & ")"

Для визуализации распределения дней недели по датам используйте условное форматирование:

  • 🎨 Выделите диапазон с датами.
  • 🔧 Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  • 📌 Используйте формулу =ДЕНЬНЕД(А1)=2 для выделения всех понедельников (2 — номер понедельника в функции ДЕНЬНЕД).

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

Можно ли протянуть дни недели по вертикали в Google Таблицах?

Да, алгоритм аналогичен Excel:

  1. Введите в A1 понедельник, в A2вторник.
  2. Выделите обе ячейки и протяните маркер вниз.
  3. Если появляются даты, выберите в меню маркера Копировать только формат.

Для формул используйте =ТЕКСТ(ДАТА(2023;1;1)+СТРОКА(A1)-1;"dddd") (синтаксис идентичен Excel).

Как сделать список дней недели с указанием "рабочий/выходной"?

Используйте формулу с проверкой:

=ТЕКСТ(ДАТА(2023;1;1)+СТРОКА(A1)-1;"dddd") & ЕСЛИ(ДЕНЬНЕД(ДАТА(2023;1;1)+СТРОКА(A1)-1)>5;" (выходной)";"")

Или примените условное форматирование для выделения субботы и воскресенья красным.

Почему при копировании списка дней в другой файл они превращаются в даты?

Это происходит, если дни были созданы через пользовательский формат (см. Способ 5). Решения:

  • Скопируйте ячейки и вставьте как Значения.
  • Используйте формулу =ТЕКСТ(А1;"dddd") в новом файле.

Как протянуть дни недели в обратном порядке (с воскресенья по понедельник)?

Для ручного списка:

  1. Введите в A1 воскресенье, в A2суббота.
  2. Протяните маркер вниз.

Для формул:

=ТЕКСТ(ДАТА(2023;1;7)-СТРОКА(A1)+1;"dddd")

Здесь ДАТА(2023;1;7) — это воскресенье, 7 января 2023 года.