Как в Excel добавить день недели к дате: все способы от простого к сложному

Зачем в Excel нужен день недели и где это применяется

Добавление дня недели к датам в Microsoft Excel — одна из тех задач, которые кажутся простыми, пока не сталкиваешься с нюансами. На практике это требуется в 80% отчётов: от составления графиков работы до анализа продаж по дням. Например, розничные сети часто сравнивают выручку по понедельникам и пятницам, а логисты оптимизируют маршруты доставки в зависимости от дня недели.

Без автоматизации вам пришлось бы вручную прописывать "понедельник", "вторник" и так далее для каждой даты — а это сотни строк в больших таблицах. К счастью, в Excel есть минимум 5 способов решить задачу: от элементарных функций до продвинутых инструментов вроде Power Query. Выбор метода зависит от версии программы, объёма данных и того, нужно ли вам просто отобразить день недели или использовать его в дальнейших расчётах.

В этой статье разберём все варианты — от базовых до профессиональных, с примерами формул, скриншотами и предупреждениями о типичных ошибках. Особое внимание уделим различиям между русскими и английскими версиями Excel: функции WEEKDAY и ДЕНЬНЕД ведут себя по-разному!

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

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

Синтаксис функции:

=ТЕКСТ(дата; "дддд")  

=ТЕКСТ(дата; "ддд")

Примеры использования:

  • 📅 =ТЕКСТ(A1; "дддд") — вернёт "понедельник", если в A1 дата 01.01.2026
  • 📅 =ТЕКСТ(СЕГОДНЯ(); "ддд") — покажет сокращённый день недели для текущей даты
  • 📅 =ТЕКСТ("15.03.2026"; "[$-ru-RU]дддд") — явное указание русского языка (актуально для многоязычных таблиц)
⚠️ Внимание: Функция ТЕКСТ возвращает текстовое значение, а не число. Это означает, что такой день недели нельзя использовать в математических операциях или сортировке как числовой эквивалент.

Убедитесь, что ячейка с датой имеет формат "Дата"|Проверьте региональные настройки (рус/англ версия Excel)|Решите, нужно ли полное или сокращённое название дня|Учтите, что результат — текст, а не число-->

Способ 2: Функция ДЕНЬНЕД (WEEKDAY) — для расчётов и условий

Когда день недели нужен не для отображения, а для вычислений (например, чтобы посчитать количество рабочих дней или применить условное форматирование), используйте функцию ДЕНЬНЕД (WEEKDAY). Она возвращает числовой код дня от 1 до 7, где:

Возвращаемое значениеДень недели (по умолчанию)День недели (тип 2)
1воскресеньепонедельник
2понедельниквторник
3вторниксреда
4средачетверг
5четвергпятница

Синтаксис:

=ДЕНЬНЕД(дата; [тип_возврата])

Примеры:

  • 🔢 =ДЕНЬНЕД(A1) — вернёт 2 для понедельника (тип 1)
  • 🔢 =ДЕНЬНЕД("10.05.2026"; 2) — вернёт 5 для пятницы (тип 2)
  • 🔢 =ЕСЛИ(ДЕНЬНЕД(A1;2)>5; "Выходной"; "Рабочий") — условная проверка
=ВЫБОР(ДЕНЬНЕД(A1;2); "Пн"; "Вт"; "Ср"; "Чт"; "Пт"; "Сб"; "Вс")
-->
⚠️ Внимание: В английской версии Excel функция WEEKDAY по умолчанию считает воскресенье первым днём недели (как в США), а в русской версии ДЕНЬНЕД может зависеть от региональных настроек ОС. Всегда проверяйте результат на тестовых данных!

1 — воскресенье=1 (американский стандарт)|2 — понедельник=1 (европейский стандарт)|3 — понедельник=0 (ISO стандарт)|Не знаю, что это такое-->

Способ 3: Пользовательский формат ячеек — без формул

Если вам не нужны дополнительные вычисления, а просто требуется отобразить день недели рядом с датой, самый элегантный способ — пользовательский формат. Это не меняет само значение ячейки (остаётся дата), но отображает её так, как вам нужно.

Как применить:

  1. Выделите ячейки с датами.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите вкладку Число → (все форматы).
  4. В поле Тип введите один из форматов:
    • 📅 дд.мм.гггг, дддд → "01.01.2026, понедельник"
    • 📅 ддд, д ммм → "пн, 1 янв"
    • 📅 [$-ru-RU]дддд, д мммм → явное указание языка

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

  • ✅ Не требует дополнительных столбцов с формулами.
  • ✅ Дата остаётся датой (можно сортировать, фильтровать, использовать в формулах).
  • ✅ Мгновенно применяется к тысячам ячеек.
⚠️ Внимание: Пользовательский формат не работает в сводных таблицах и некоторых функциях импорта данных. Если вы планируете дальнейшую обработку данных в Power Query или Power Pivot, используйте формулы из способов 1 или 2.

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

Если вы работаете с большими наборами данных (например, импортируете даты из базы или CSV), добавлять день недели вручную неэффективно. В этом случае Power Query (вкладка Данные → Получение данных) станет вашим лучшим помощником.

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

  1. Выделите таблицу с датами и нажмите Данные → Из таблицы/диапазона (или импортируйте данные из файла).
  2. В редакторе Power Query выделите столбец с датами.
  3. Перейдите на вкладку Добавить столбец → Дата и время → День → Название дня.
  4. Выберите формат: полное или сокращённое название.
  5. Нажмите Закрыть и загрузить.

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

  • 🔄 Автоматически обновляет данные при изменении источника.
  • 📊 Можно добавить несколько столбцов (например, день недели, номер недели, квартал).
  • 🌍 Поддерживает мультиязычные форматы (важно для международных отчётов).
Как изменить первый день недели в Power Query?

В редакторе Power Query перейдите в Файл → Параметры и настройки → Параметры → Региональные настройки. В разделе Локаль для импорта выберите язык, где понедельник — первый день недели (например, "Русский (Россия)"). Это повлияет на функции вроде Date.DayOfWeek.

Способ 5: VBA-макрос — для продвинутых пользователей

Если вам нужно добавить день недели к тысячам строк регулярно, а стандартные функции кажутся медленными, VBA-макрос ускорит процесс в 10–100 раз. Ниже пример кода, который добавляет столбец с днём недели рядом с выбранными датами:

Sub AddWeekdayColumn()

Dim rng As Range

Dim cell As Range

Dim newCol As Range

' Выделяем диапазон с датами

Set rng = Selection

' Добавляем новый столбец справа

Set newCol = rng.Offset(0, 1)

newCol.EntireColumn.Insert

' Заполняем новый столбец днями недели

For Each cell In rng

newCol.Cells(cell.Row).Value = Format(cell.Value, "dddd")

Next cell

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

newCol.EntireColumn.AutoFit

newCol.EntireColumn.NumberFormat = "@" ' Текстовый формат

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите ячейки с датами в Excel и запустите макрос (F5).

Предупреждения:

  • 🚨 Макросы работают только в файлах с расширением .xlsm (с поддержкой макросов).
  • 🚨 Включите макросы в Файл → Параметры → Центр управления безопасностью → Параметры центра....
  • 🚨 Тестируйте макрос на копии данных — ошибки в коде могут испортить оригинал.

Типичные ошибки и как их избежать

Даже в простой задаче добавления дня недели легко допустить ошибку. Вот самые распространённые ловушки и способы их обойти:

ОшибкаПричинаРешение
Функция возвращает #ЗНАЧ! Ячейка содержит текст, а не дату Проверьте формат ячейки (Числовой формат → Дата) или используйте =ДАТАЗНАЧ(A1)
Дни недели на английском Неверные региональные настройки Добавьте [$-ru-RU] в формат: =ТЕКСТ(A1; "[$-ru-RU]дддд")
ДЕНЬНЕД возвращает неверные числа Не указан тип возврата (по умолчанию воскресенье=1) Явно укажите тип: =ДЕНЬНЕД(A1; 2) для понедельника=1
Сортировка работает неправильно Дни недели как текст, а не числа Используйте ДЕНЬНЕД для числовых эквивалентов или создайте вспомогательный столбец

Ещё одна частая проблема — смещение дней при копировании формул. Например, если вы используете =ТЕКСТ(A1; "дддд") и протягиваете формулу вправо, Excel может автоматически изменить формат на ддд или другой. Чтобы этого избежать:

  • 🔒 Закрепите формат ячейки с помощью $: =ТЕКСТ(A1; "$дддд") (не сработает, это иллюстрация!).
  • 🔒 Или просто вручную проверяйте формат после копирования.

FAQ: Ответы на частые вопросы

Можно ли в Excel получить день недели на английском, если у меня русская версия?

Да, используйте явное указание локали в функции ТЕКСТ:

=ТЕКСТ(A1; "[$-en-US]dddd")  

Для других языков замените en-US на нужный код (например, de-DE для немецкого).

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

Используйте комбинацию ДЕНЬНЕД + СЧЁТЕСЛИ:

=СЧЁТЕСЛИ(ДиапазонДат; "понедельник")  

=СУММПРОИЗВ(--(ДЕНЬНЕД(ДиапазонДат;2)=1))

Для диапазона A1:A100 и среды (день 3): =СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A100;2)=3)).

Почему функция ДЕНЬНЕД возвращает 0 для корректной даты?

Это происходит, если:

  1. Вы используете тип возврата 3 (=ДЕНЬНЕД(дата;3)), где понедельник = 0.
  2. Ячейка содержит 0 (Excel воспринимает его как 00.01.1900, воскресенье в типе 3).
  3. Дата введена как текст (например, "01.01.2026" вместо реальной даты).

Проверьте формат ячейки и тип возврата функции.

Как в Excel Online добавить день недели?

В веб-версии Excel доступны те же функции:

  • 🌐 =ТЕКСТ(A1; "дддд") — работает.
  • 🌐 =ДЕНЬНЕД(A1; 2) — работает.
  • 🌐 Пользовательский формат — поддерживается.

Ограничения: нет Power Query и макросов (VBA).

Можно ли получить день недели без года (только по месяцу и числу)?

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

  1. Добавьте произвольный год (например, 2026).
  2. Получите день недели.
  3. Учтите, что результат будет корректен только для выбранного года!

Формула: =ТЕКСТ(ДАТА(2026; МЕСЯЦ(A1); ДЕНЬ(A1)); "дддд").