Работа с датами в Microsoft Excel — одна из самых востребованных задач среди пользователей. Нередко требуется не просто хранить даты, а анализировать их: выделять выходные, считать рабочие дни или просто определять, на какой день недели приходится конкретная дата. Например, вы можете планировать расписание встреч, анализировать продажи по дням недели или строить отчёты с учётом выходных.
В этой статье мы разберём 5 способов, как в Excel вычислить день недели по дате — от базовых функций до продвинутых формул с учётом локализации. Все методы работают в Excel 2010–2023, Excel для Mac и Google Таблицах. Вы также сможете скачать готовые шаблоны с формулами для быстрого использования.
Особое внимание уделим нюансам: почему функция ДЕНЬНЕД может выдавать неверные результаты в разных языковых версиях Excel, как избежать ошибок при работе с массивами дат, и как автоматизировать процесс с помощью условного форматирования или Power Query.
1. Базовая функция ДЕНЬНЕД (WEEKDAY): быстрый способ
Самый простой метод — использовать встроенную функцию ДЕНЬНЕД (в английской версии — WEEKDAY). Она возвращает номер дня недели для указанной даты, где по умолчанию воскресенье = 1, а суббота = 7.
Синтаксис функции:
=ДЕНЬНЕД(дата; [тип_возврата])
где [тип_возврата] — необязательный аргумент, определяющий систему нумерации:
- 🔢 1 или опущен — неделя начинается с воскресенья (1–7)
- 🔢 2 — неделя начинается с понедельника (1–7)
- 🔢 3 — неделя начинается с понедельника (0–6)
Пример: если в ячейке A1 указана дата 15.05.2026 (среда), то:
=ДЕНЬНЕД(A1) → вернёт 4 (среда, если воскресенье = 1)
=ДЕНЬНЕД(A1; 2) → вернёт 3 (среда, если понедельник = 1)
⚠️ Внимание: В Google Таблицах функцияДЕНЬНЕДпо умолчанию использует систему, где понедельник = 1 (аналогтип_возврата = 2в Excel). Это частая причина ошибок при переносе файлов между программами.
Чтобы получить не номер, а название дня недели, комбинируйте ДЕНЬНЕД с функцией ВЫБОР:
=ВЫБОР(ДЕНЬНЕД(A1; 2); "Пн"; "Вт"; "Ср"; "Чт"; "Пт"; "Сб"; "Вс")
2. Функция ТЕКСТ (TEXT): день недели на русском или английском
Если вам нужно получить полное название дня недели (например, "среда" вместо числа "3"), используйте функцию ТЕКСТ с форматом "ДДДД":
=ТЕКСТ(A1; "ДДДД")
Эта формула вернёт название дня на языке вашей системы (например, "среда" для русскоязычного Excel).
Доступные форматы для функции ТЕКСТ:
| Формат | Результат | Пример |
|---|---|---|
"ДДД" | Сокращённое название (3 буквы) | "Ср" |
"ДДДД" | Полное название | "Среда" |
"DDDD" | Полное название на английском | "Wednesday" |
"ДДД, ДД МММ" | День недели + дата | "Ср, 15 мая" |
Преимущество этого метода — автоматическая адаптация к языку интерфейса Excel. Если вы отправите файл коллеге с английской версией программы, формула вернёт "Wednesday" вместо "среда" без дополнительных настроек.
⚠️ Внимание: Если дата в ячейке хранится как текст (например, после импорта из CSV), функцияТЕКСТвернёт ошибку. Используйте=ДАТАЗНАЧ(A1), чтобы преобразовать текст в дату.
3. Продвинутый метод: массив дней недели без ВПР
Если вам нужно избежать функции ВЫБОР (например, из-за ограничения на 254 аргумента в старых версиях Excel), используйте массив названий дней с функцией ИНДЕКС:
=ИНДЕКС({"Пн";"Вт";"Ср";"Чт";"Пт";"Сб";"Вс"}; ДЕНЬНЕД(A1; 2))
Этот метод удобен для создания динамических списков, которые автоматически обновляются при изменении даты. Например, вы можете использовать его в выпадающих списках для фильтрации данных по дням недели.
Чтобы сделать формулу более универсальной, добавьте проверку на пустую ячейку:
=ЕСЛИ(A1=""; ""; ИНДЕКС({"Пн";"Вт";"Ср";"Чт";"Пт";"Сб";"Вс"}; ДЕНЬНЕД(A1; 2)))
Ячейка содержит дату, а не текст|Формат ячейки — "Дата" (не "Общий")|Функция ДЕНЬНЕД использует нужный тип_возврата (2 для понедельника=1)|Для английских названий заменён массив на {"Mon";"Tue";...}
-->
4. Условное форматирование: выделение выходных дней
Чтобы визуально выделять выходные дни (субботу и воскресенье) в таблице с датами, используйте условное форматирование:
- Выделите диапазон с датами (например,
A1:A100). - Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите тип правила:
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=ИЛИ(ДЕНЬНЕД(A1; 2)=6; ДЕНЬНЕД(A1; 2)=7) - Задайте формат (например, красный текст или серый фон).
Теперь все субботы и воскресенья в выделенном диапазоне будут автоматически подсвечиваться. Этот метод полезен для анализа данных по рабочим/выходным дням — например, для отслеживания продаж или посещаемости.
Чтобы выделить праздничные дни, добавьте отдельное правило с функцией СЧЁТЕСЛИ, проверяющей дату по списку праздников:
=СЧЁТЕСЛИ(Праздники; A1)>0
где Праздники — именованный диапазон с датами праздников.
5. Power Query: автоматическое добавление дня недели при импорте
Если вы регулярно импортируете данные с датами (например, из CSV или базы данных), удобно автоматически добавлять столбец с днём недели с помощью Power Query:
- Импортируйте данные через
Данные → Получить данные → Из файла/базы данных. - В редакторе Power Query выделите столбец с датами.
- Перейдите на вкладку
Добавить столбец → Дата и время → День → Название дня. - Сохраните и загрузите данные обратно в Excel.
Преимущества этого метода:
- 🔄 Автоматическое обновление при изменении источника данных.
- 🌍 Поддержка нескольких языков (можно выбрать локаль для названий дней).
- ⚡ Быстрое применение к большим массивам данных (миллионы строк).
Чтобы изменить язык названий дней, в Power Query используйте параметр Locale в функции Date.DayOfWeekName. Например, для русского языка:
= Date.DayOfWeekName([Дата], "ru-RU")
Как обновить данные после изменения источника?
В Excel перейдите на вкладку Данные, нажмите Обновить все (или Обновить для конкретного запроса). Если источник — файл, убедитесь, что он не открыт в другой программе (например, в Блокноте), иначе Power Query не сможет получить к нему доступ.
6. Ошибки и решения: почему формулы не работают?
Даже простые функции могут выдавать ошибки. Рассмотрим типичные проблемы и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Ячейка содержит текст, а не дату. | Используйте =ДАТАЗНАЧ(A1) или измените формат ячейки на "Дата". |
#ИМЯ? | Опечатка в названии функции (например, "ДЕНЬНЕДЕЛЯ" вместо "ДЕНЬНЕД"). | Проверьте синтаксис. В английской версии Excel используйте WEEKDAY. |
| Неверный день недели | Не указан тип_возврата в ДЕНЬНЕД. | Явно укажите =ДЕНЬНЕД(A1; 2) для понедельника=1. |
| Названия дней на английском | Язык Excel отличается от ожидаемого. | Используйте ТЕКСТ с явным указанием локали: =ТЕКСТ(A1; "[$-ru-RU]ДДДД"). |
Если вы работаете с Google Таблицами, помните, что некоторые функции ведут себя иначе:
- 📅
ДЕНЬНЕДпо умолчанию возвращает 1 для понедельника (кактип_возврата=2в Excel). - 🌐 Функция
ТЕКСТигнорирует локаль — для русского языка используйте=ТЕКСТ(A1; "EEEE")+ ручная замена английских названий черезПОДСТАВИТЬ.
FAQ: Частые вопросы по работе с днями недели в Excel
🔹 Как посчитать количество рабочих дней между двумя датами?
Используйте функцию ЧИСТРАБДНИ (в английской версии — NETWORKDAYS):
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
где [праздники] — необязательный диапазон с датами праздников. Например, =ЧИСТРАБДНИ(A1; B1; Праздники!A:A).
🔹 Почему функция ТЕКСТ возвращает "######" вместо названия дня?
Это означает, что ширина столбца недостаточна для отображения полного названия дня (например, "среда"). Растяните столбец или используйте формат "ДДД" для сокращённого варианта ("Ср").
🔹 Как получить номер недели по дате?
Используйте функцию НОМНЕДЕЛИ (в английской версии — WEEKNUM):
=НОМНЕДЕЛИ(A1; [тип_возврата])
где [тип_возврата] определяет первый день недели (1 — воскресенье, 2 — понедельник).
🔹 Можно ли автоматически обновлять дни недели при изменении даты?
Да, все приведённые формулы (ДЕНЬНЕД, ТЕКСТ, ИНДЕКС) обновляются автоматически при изменении исходной даты. Если этого не происходит, проверьте настройки вычислений: Формулы → Параметры вычислений → Автоматически.
🔹 Как вывести день недели на английском в русскоязычном Excel?
Используйте функцию ТЕКСТ с английским форматом:
=ТЕКСТ(A1; "[$-en-US]DDDD")
или создайте пользовательскую функцию на VBA, если требуется гибкость.