Зачем в 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: Пользовательский формат ячеек — без формул
Если вам не нужны дополнительные вычисления, а просто требуется отобразить день недели рядом с датой, самый элегантный способ — пользовательский формат. Это не меняет само значение ячейки (остаётся дата), но отображает её так, как вам нужно.
Как применить:
- Выделите ячейки с датами.
- Нажмите
Ctrl+1(или правая кнопка →Формат ячеек). - Выберите вкладку
Число → (все форматы). - В поле
Типвведите один из форматов:- 📅
дд.мм.гггг, дддд→ "01.01.2026, понедельник" - 📅
ддд, д ммм→ "пн, 1 янв" - 📅
[$-ru-RU]дддд, д мммм→ явное указание языка
- 📅
Преимущества метода:
- ✅ Не требует дополнительных столбцов с формулами.
- ✅ Дата остаётся датой (можно сортировать, фильтровать, использовать в формулах).
- ✅ Мгновенно применяется к тысячам ячеек.
⚠️ Внимание: Пользовательский формат не работает в сводных таблицах и некоторых функциях импорта данных. Если вы планируете дальнейшую обработку данных в Power Query или Power Pivot, используйте формулы из способов 1 или 2.
Способ 4: Power Query — для больших данных и автоматизации
Если вы работаете с большими наборами данных (например, импортируете даты из базы или CSV), добавлять день недели вручную неэффективно. В этом случае Power Query (вкладка Данные → Получение данных) станет вашим лучшим помощником.
Пошаговая инструкция:
- Выделите таблицу с датами и нажмите
Данные → Из таблицы/диапазона(или импортируйте данные из файла). - В редакторе Power Query выделите столбец с датами.
- Перейдите на вкладку
Добавить столбец → Дата и время → День → Название дня. - Выберите формат: полное или сокращённое название.
- Нажмите
Закрыть и загрузить.
Преимущества 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
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в 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 для корректной даты?
Это происходит, если:
- Вы используете тип возврата 3 (
=ДЕНЬНЕД(дата;3)), где понедельник = 0. - Ячейка содержит
0(Excel воспринимает его как 00.01.1900, воскресенье в типе 3). - Дата введена как текст (например, "01.01.2026" вместо реальной даты).
Проверьте формат ячейки и тип возврата функции.
Как в Excel Online добавить день недели?
В веб-версии Excel доступны те же функции:
- 🌐
=ТЕКСТ(A1; "дддд")— работает. - 🌐
=ДЕНЬНЕД(A1; 2)— работает. - 🌐 Пользовательский формат — поддерживается.
Ограничения: нет Power Query и макросов (VBA).
Можно ли получить день недели без года (только по месяцу и числу)?
Нет, Excel всегда привязывает день недели к конкретной дате. Например, 1 марта может быть любым днём недели в зависимости от года. Если у вас только месяц и число:
- Добавьте произвольный год (например, 2026).
- Получите день недели.
- Учтите, что результат будет корректен только для выбранного года!
Формула: =ТЕКСТ(ДАТА(2026; МЕСЯЦ(A1); ДЕНЬ(A1)); "дддд").