Работа с датами и днями недели в Microsoft Excel — одна из самых востребованных задач при анализе данных, составлении графиков или планировании. Часто пользователям нужно не просто отобразить дату, а вытащить из неё конкретный день недели (например, "понедельник" вместо "01.01.2026"), причем в нужном формате — числовом, текстовом или сокращённом. В этой статье разберём 7 способов, как это сделать: от элементарных функций до сложных формул с учётом локализации, выходных дней и динамических диапазонов.
Особенность работы с днями недели в Excel заключается в том, что программа хранит даты как последовательные числа (начиная с 1 января 1900 года), а отображение дня недели зависит от региональных настроек. Например, функция ТЕКСТ в русской версии вернёт "понедельник", а в английской — "Monday". Мы покажем, как обойти эти нюансы и получить универсальные решения.
Статья будет полезна как новичкам, так и опытным пользователям: здесь есть базовые функции вроде ДЕНЬНЕД, так и продвинутые приёмы с ВЫБОР, ИНДЕКС и даже Power Query для автоматизации. Все примеры протестированы в Excel 2019–2026 и Excel Online.
1. Базовые функции: ДЕНЬНЕД и ТЕКСТ
Начнём с двух самых простых функций, которые есть в любом Excel — ДЕНЬНЕД (WEEKDAY в английской версии) и ТЕКСТ (TEXT). Они покрывают 80% задач по извлечению дней недели.
Функция ДЕНЬНЕД возвращает номер дня недели (от 1 до 7) для указанной даты. По умолчанию 1 — это воскресенье, но это можно изменить вторым аргументом. Синтаксис:
=ДЕНЬНЕД(дата; [тип_возврата])
- 📅
дата— ячейка с датой (например,A1) или функция вродеСЕГОДНЯ(). - 🔢
[тип_возврата](необязательно):1— неделя начинается с воскресенья (1–7),2— с понедельника (1–7).
Пример: если в ячейке A1 дата 10.05.2026 (пятница), то:
- 🔹
=ДЕНЬНЕД(A1)→ вернёт6(пятница при типе 1). - 🔹
=ДЕНЬНЕД(A1; 2)→ вернёт5(пятница при типе 2).
Функция ТЕКСТ преобразует дату в текстовый формат, включая название дня недели. Синтаксис:
=ТЕКСТ(дата; "формат")
Для дней недели используйте форматы:
- 📌
"дддд"— полное название (например, "понедельник"). - 📌
"ддд"— сокращённое (например, "пн").
Пример: =ТЕКСТ(A1; "дддд") → "пятница".
⚠️ Внимание: Функция ТЕКСТ зависит от языковых настроек Excel. Если у вас английская версия, вместо "пн" будет "Mon". Чтобы получить русские названия в любой версии, используйте методы из раздела 4.
2. Как получить название дня недели на русском в английском Excel
Если ваш Excel настроен на английский язык, но нужно вывести дни недели по-русски (или наоборот), стандартные функции не помогут. Решение — создать собственный перевод с помощью функции ВЫБОР (CHOOSE).
Алгоритм:
- Получите номер дня недели функцией
ДЕНЬНЕД. - Используйте
ВЫБОР, чтобы сопоставить номер с русским названием.
Формула для полного названия:
=ВЫБОР(ДЕНЬНЕД(A1; 2); "понедельник"; "вторник"; "среда"; "четверг"; "пятница"; "суббота"; "воскресенье")
Для сокращённого варианта:
=ВЫБОР(ДЕНЬНЕД(A1; 2); "пн"; "вт"; "ср"; "чт"; "пт"; "сб"; "вс")
Преимущество этого метода — независимость от языковых настроек Excel. Минус — если изменится порядок дней (например, неделя начнётся с воскресенья), формулу придётся корректировать.
1. Убедитесь, что в ячейке A1 действительно дата (а не текст)
2. Проверьте второй аргумент ДЕНЬНЕД (2 для понедельника как первого дня)
3. Сопоставьте номера дней с позициями в ВЫБОР (1=пн, 2=вт и т.д.)
4. Если нужно воскресенье первым, измените аргумент на 1 и переставьте названия-->
3. Динамические диапазоны: дни недели для списка дат
Часто требуется вывести дни недели не для одной даты, а для целого столбца. Например, у вас в A1:A10 перечень дат, и нужно рядом показать соответствующие дни. Здесь поможет протягивание формул или функция МАССИВ (в новых версиях Excel).
Способ 1: Протягивание формулы
Введите в B1 любую из формул из раздела 1 или 2, затем протяните её за правый нижний угол ячейки до B10. Excel автоматически скорректирует ссылки (например, A1 → A2, A3 и т.д.).
Способ 2: Формула массива (Excel 365/2021)
Если у вас современная версия Excel, можно использовать ДИНАММАССИВ:
=ТЕКСТ(A1:A10; "дддд")
Эта формула автоматически заполнит все ячейки в диапазоне B1:B10 без протягивания.
Способ 3: Power Query для больших данных
Если данных тысячи, удобнее использовать Power Query:
- Выделите диапазон с датами →
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query выберите столбец с датой →
Добавить столбец → Дата → День недели → Название дня. - Нажмите
Закрыть и загрузить.
| Метод | Подходит для | Плюсы | Минусы |
|---|---|---|---|
| Протягивание формулы | Маленькие таблицы (до 100 строк) | Простота, работает во всех версиях | Ручная корректировка при добавлении строк |
| Формула массива | Excel 365/2021, динамические диапазоны | Автоматическое обновление, нет протягивания | Не работает в старых версиях |
| Power Query | Большие данные (тысячи строк) | Высокая скорость, гибкость | Требует навыков работы с Power Query |
4. Продвинутые формулы: учёт выходных и праздников
Иногда нужно не просто вывести день недели, а проверять, является ли он выходным или рабочим днём. Например, для расчёта сроков доставки или планирования задач. Здесь поможет комбинация функций ДЕНЬНЕД и ЕСЛИ.
Формула для определения выходного:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1; 2)>5; [проверка праздников]); "Выходной"; "Рабочий день")
Где [проверка праздников] — это дополнительное условие для учёта государственных праздников (например, 1 января).
Пример с учётом праздников (предположим, список праздников в диапазоне D1:D10):
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1; 2)>5; СЧЁТЕСЛИ(D1:D10; A1)>0); "Выходной"; "Рабочий день")
Как автоматизировать список праздников?
Создайте отдельный лист с перечнем праздничных дат (по одной в строке). Затем используйте функцию СЧЁТЕСЛИ, как в примере выше. Для динамического обновления можно подключить праздники через Power Query из внешнего источника (например, с сайта правительства).
Как учитывать региональные праздники?
Если в вашем регионе есть локальные праздники (например, день города), добавьте их в отдельный столбец на листе с праздниками. Затем модифицируйте формулу:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1; 2)>5; СЧЁТЕСЛИ(Праздники!A:A; A1)+СЧЁТЕСЛИ(Праздники!B:B; A1)>0); "Выходной"; "Рабочий день")
Где Праздники!A:A — федеральные праздники, а Праздники!B:B — региональные.
⚠️ Внимание: При работе с датами в формате текста (например, "01.01.2026" как текст, а не дата) функцииДЕНЬНЕДиСЧЁТЕСЛИне сработают. Преобразуйте текст в дату с помощьюДАТАЗНАЧилиЗНАЧЕН.
5. Ошибки и их решение
При работе с днями недели в Excel часто возникают ошибки. Разберём TOP-5 проблем и способы их исправления.
1. #ЗНАЧ! в функции ДЕНЬНЕД
Причина: в ячейке не дата, а текст. Решение:
- 🔧 Проверьте формат ячейки: выделите её →
Главная → Формат → Формат ячеек → Дата. - 🔧 Используйте
ДАТАЗНАЧдля преобразования текста в дату:=ДЕНЬНЕД(ДАТАЗНАЧ(A1)).
2. Неправильный день недели (смещение на 1)
Причина: неверный второй аргумент в ДЕНЬНЕД. По умолчанию 1 — неделя начинается с воскресенья. Решение:
- 📅 Для понедельника как первого дня используйте
=ДЕНЬНЕД(A1; 2).
3. Функция ТЕКСТ возвращает англоязычные названия
Причина: языковые настройки Excel. Решение:
- 🌍 Измените язык формата даты:
Файл → Параметры → Язык → Язык отображения(требует перезапуска Excel). - 🔤 Или используйте
ВЫБОР, как в разделе 2.
4. Формула массива не работает
Причина: старая версия Excel (до 2019 года). Решение:
- 🔄 Обновите Excel или используйте протягивание формул.
5. Power Query не распознаёт даты
Причина: данные импортированы как текст. Решение:
- 📊 В редакторе Power Query выделите столбец →
Преобразовать → Тип данных → Дата.
=ДАТА(ГОД; МЕСЯЦ; ДЕНЬ)
-->
6. Автоматизация: VBA и пользовательские функции
Если вам регулярно нужно работать с днями недели, имеет смысл создать пользовательскую функцию на VBA. Это ускорит работу и избавит от повторного ввода сложных формул.
Пример 1: Функция для русского названия дня недели
Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и добавьте код:
Function РусскийДеньНедели(Дата As Date) As String
Dim День As Integer
День = Weekday(Дата, vbMonday) ' vbMonday = 2 (неделя начинается с понедельника)
Select Case День
Case 1: РусскийДеньНедели = "понедельник"
Case 2: РусскийДеньНедели = "вторник"
Case 3: РусскийДеньНедели = "среда"
Case 4: РусскийДеньНедели = "четверг"
Case 5: РусскийДеньНедели = "пятница"
Case 6: РусскийДеньНедели = "суббота"
Case 7: РусскийДеньНедели = "воскресенье"
End Select
End Function
Теперь в Excel можно использовать =РусскийДеньНедели(A1).
Пример 2: Функция для проверки выходного
Function ЭтоВыходной(Дата As Date, Optional Праздники As Range) As String
Dim ДеньНедели As Integer
ДеньНедели = Weekday(Дата, vbMonday)
' Проверяем субботу/воскресенье
If ДеньНедели > 5 Then
ЭтоВыходной = "Выходной"
Exit Function
End If
' Проверяем праздники (если передан диапазон)
If Not Праздники Is Nothing Then
For Each Cell In Праздники
If Cell.Value = Дата Then
ЭтоВыходной = "Выходной"
Exit Function
End If
Next Cell
End If
ЭтоВыходной = "Рабочий день"
End Function
Использование: =ЭтоВыходной(A1; Праздники!A:A), где Праздники!A:A — столбец с датами праздников.
⚠️ Внимание: Пользовательские функции VBA работают только в классическом Excel (не в Excel Online). Также их нужно разрешить в настройках безопасности макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы).
- Не работают в Excel Online и мобильных версиях.
- Требуют навыков программирования для модификации.
- Могут конфликтовать с защитой файла (макросы отключены по умолчанию).-->
7. Практические примеры: отчёты, графики, условное форматирование
Знание дней недели пригодится для создания интерактивных отчётов, графиков и условного форматирования. Разберём три реальных кейса.
Кейс 1: Подсветка выходных дней в календаре
Допустим, у вас в A1:A31 даты месяца. Чтобы выделить субботы и воскресенья красным:
- Выделите диапазон
A1:A31. - Перейдите в
Главная → Условное форматирование → Создать правило → Использовать формулу. - Введите формулу:
=ДЕНЬНЕД(A1; 2)>5. - Задайте формат (например, красный фон) и нажмите
ОК.
Кейс 2: Гистограмма по дням недели
Чтобы построить график распределения данных по дням недели:
- Добавьте столбец с днями недели (например,
=ТЕКСТ(A1; "ддд")). - Используйте
Вставка → Гистограммас группировкой по дням.
Кейс 3: Фильтрация данных по дням недели
Если нужно отфильтровать таблицу по конкретному дню (например, показать только понедельники):
- Добавьте столбец с днями недели (формула из раздела 1 или 2).
- Примените фильтр (
Данные → Фильтр) и выберите нужный день.
Критичный нюанс: при фильтрации по дням недели в большом диапазоне (более 10 000 строк) Excel может тормозить. В этом случае лучше использовать Power Query или сводные таблицы.
FAQ: Частые вопросы
Как в Excel получить номер дня недели (1–7), где 1 — понедельник?
Используйте функцию ДЕНЬНЕД с вторым аргументом 2:
=ДЕНЬНЕД(A1; 2)
Это вернёт 1 для понедельника, 2 для вторника и т.д. до 7 (воскресенье).
Почему функция ТЕКСТ возвращает "######" вместо дня недели?
Это происходит, если ширина столбца слишком мала для отображения полного названия дня. Растяните столбец или используйте сокращённый формат ("ддд" вместо "дддд").
Также проверьте, что в ячейке действительно дата, а не текст (используйте ДАТАЗНАЧ для преобразования).
Можно ли в Excel получить день недели на другом языке (например, немецком)?
Да, для этого:
- Измените языковые настройки Excel на нужный язык (
Файл → Параметры → Язык). - Используйте
ТЕКСТс локализованным форматом.
Или создайте собственную функцию через ВЫБОР, как в разделе 2, но с переводом на нужный язык.
Как посчитать количество определённых дней недели в диапазоне?
Используйте комбинацию СЧЁТЕСЛИ и ДЕНЬНЕД. Например, чтобы посчитать все понедельники в A1:A100:
=СЧЁТЕСЛИ(ДЕНЬНЕД(A1:A100; 2); 1)
В новых версиях Excel (с поддержкой массивов) формула сработает сразу. В старых версиях нужно вводить как формулу массива (Ctrl + Shift + Enter).
Как в Excel Online вывести дни недели?
В Excel Online доступны все стандартные функции (ДЕНЬНЕД, ТЕКСТ, ВЫБОР), но нет поддержки VBA и некоторых надстроек. Используйте формулы из разделов 1–3. Для автоматизации подключите Power Automate (бывший Microsoft Flow).