Почему определение дня недели в Excel — это не просто "красивость", а инструмент анализа
Вы когда-нибудь пытались проанализировать продажи по дням недели, чтобы выявить пиковые часы работы магазина? Или может быть составляли график дежурств сотрудников, где критично учитывать выходные? В обоих случаях ручной ввод дней недели — это не просто утомительно, но и чревато ошибками. Excel умеет автоматически преобразовывать даты в дни недели, и сегодня мы разберём все возможные способы: от элементарных функций до гибких формул с учётом локализации.
В этой статье вы найдёте не только стандартные решения вроде функции ТЕКСТ, но и малоизвестные трюки. Например, как вытащить номер дня недели (где понедельник = 1), как сделать автозаполнение с учётом праздников, или почему в некоторых случаях Excel показывает дни недели на английском — и как это исправить. А ещё мы разберём типичные ошибки, из-за которых формулы возвращают #ЗНАЧ! вместо ожидаемого "пятница".
Неважно, работаете ли вы с Excel 2010 или последней версией Microsoft 365 — все методы из этой статьи проверены на совместимость. И да, здесь не будет шаблонных советов вроде "вставьте функцию и всё заработает". Мы погрузимся в нюансы: от формата ячеек до особенностей работы с датами в разных языковых версиях программы.
Способ 1: Функция ТЕКСТ — самый простой вариант для новичков
Если вам нужно быстро получить название дня недели без лишних настроек, функция ТЕКСТ — ваш лучший друг. Она преобразует дату в текстовый формат с учётом заданного шаблона. Синтаксис прост:
=ТЕКСТ(дата; "дддд")
Где дата — это ссылка на ячейку с датой (например, A2), а "дддд" — формат отображения полного названия дня недели. Если вам нужны сокращённые варианты (например, "пн" вместо "понедельник"), используйте "ddd".
- 📅 Пример:
=ТЕКСТ(A2; "дддд")вернёт "среда" для даты 15.05.2026. - 🔄 Локализация: Если у вас английская версия Excel, результат будет на английском ("Wednesday"). Чтобы исправить это, измените языковые настройки ячейки.
- ⚡ Бонус: Можно комбинировать с другими форматами, например:
=ТЕКСТ(A2; "дддд, dd.mm.yyyy")→ "среда, 15.05.2026".
⚠️ Внимание: Функция ТЕКСТ возвращает текст, а не число. Это значит, чтоLater вы не сможете использовать результат в математических операциях (например, сложить или отсортировать дни недели по алфавиту). Для таких задач нужны другие подходы — о них читайте дальше.
Способ 2: Функция ДЕНЬНЕД — когда нужен номер, а не название
Иногда вместо слова "пятница" требуется её порядковый номер — например, для условного форматирования (подсветки выходных) или для расчётов. Здесь на помощь приходит функция ДЕНЬНЕД:
=ДЕНЬНЕД(дата; [тип_возврата])
Параметр [тип_возврата] определяет, с какого дня начинается отсчёт:
- 🔢 1 (или опущено): Воскресенье = 1, суббота = 7 (стандарт для США).
- 🔢 2: Понедельник = 1, воскресенье = 7 (европейский стандарт).
- 🔢 3: Понедельник = 0, воскресенье = 6 (используется в некоторых финансовых расчётах).
Пример: если в ячейке A2 дата 15.05.2026 (среда), то:
=ДЕНЬНЕД(A2)→ 4 (воскресенье=1, среда=4).=ДЕНЬНЕД(A2; 2)→ 3 (понедельник=1, среда=3).
| Тип возврата | Понедельник | Воскресенье | Пример для среды |
|---|---|---|---|
| 1 (по умолчанию) | 2 | 1 | 4 |
| 2 | 1 | 7 | 3 |
| 3 | 0 | 6 | 2 |
⚠️ Внимание: Если вы используете номер дня недели для фильтрации данных, убедитесь, что параметр [тип_возврата] одинаков во всех формулах. Иначе выходные дни могут "сместиться"!
☑️ Подготовка к работе с ДЕНЬНЕД
Способ 3: Форматирование ячеек — автоматическое отображение без формул
Мало кто знает, но Excel может показывать день недели прямо в ячейке с датой — без единой формулы! Для этого достаточно изменить формат ячейки:
- Выделите ячейку(и) с датой.
- Нажмите
Ctrl+1(или правой кнопкой →Формат ячеек). - Перейдите на вкладку
Число→Все форматы. - В поле
Типвведите один из шаблонов:дддд— полное название (среда).ddd— сокращённое (ср).дддд, dd.mm.yyyy— день недели + дата (среда, 15.05.2026).
Преимущество этого метода в том, что исходная дата сохраняется в ячейке — вы в любой момент можете вернуть стандартный формат или использовать её в расчётах. А ещё такой подход экономит место: не нужно создавать дополнительный столбец с формулами.
Минус: если вы скопируете значение такой ячейки в другой файл, формат может сброситься. Чтобы этого избежать, используйте Специальную вставку → Значения и форматы.
Способ 4: Продвинутые формулы — день недели с учётом праздников и исключений
А что если вам нужно не просто определить день недели, а ещё и учесть, что 1 мая — это праздник, даже если выпадает на вторник? Или что ваша компания работает по скользящему графику, где "выходные" плавают? Здесь пригодятся комбинированные формулы.
Пример 1: Подсветка выходных и праздников
Создайте дополнительный столбец с формулой, которая проверяет день недели и список праздников:
=ИЛИ(ДЕНЬНЕД(A2;2)>5; СЧЁТЕСЛИ($D$2:$D$10;A2))
Где:
A2— ячейка с датой.$D$2:$D$10— диапазон с датами праздников (например, 01.01.2026, 08.03.2026 и т.д.).ДЕНЬНЕД(...,2)>5— проверяет, что день недели — суббота (6) или воскресенье (7).
Пример 2: Название дня недели + пометка о празднике
=ЕСЛИ(СЧЁТЕСЛИ($D$2:$D$10;A2); ТЕКСТ(A2;"дддд")&" (праздник)"; ТЕКСТ(A2;"дддд"))
Эта формула вернёт, например, "среда" или "среда (праздник)", если дата есть в списке $D$2:$D$10.
⚠️ Внимание: Если список праздников большой (более 100 дат), используйте вместоСЧЁТЕСЛИфункциюПОИСКПОЗс обработкой ошибок — она работает быстрее в больших массивах.
Как автоматически обновлять список праздников?
Если праздники привязаны к конкретным датам (например, 1 января), достаточно один раз ввести их в отдельный лист. Для "плавающих" праздников (например, Пасха) потребуется VBA-скрипт или подключение к внешнему календарю через Power Query.
Способ 5: VBA-макросы — для автоматизации рутинных задач
Если вам регулярно нужно обрабатывать сотни дат с дополнительной логикой (например, выделять красным все пятницы 13-го), стоит освоить VBA. Вот простой макрос, который добавляет столбец с днями недели ко всем выделенным датам:
Sub AddWeekdayColumn()
Dim rng As Range
Dim cell As Range
Dim newCol As Range
' Проверяем, выбраны ли ячейки с датами
On Error Resume Next
Set rng = Selection.SpecialCells(xlCellTypeConstants, xlNumbers)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "Выделите ячейки с датами!", vbExclamation
Exit Sub
End If
' Добавляем новый столбец справа
Set newCol = rng.Offset(0, 1).EntireColumn
newCol.Insert Shift:=xlToRight
' Заполняем дни недели
For Each cell In rng
cell.Offset(0, 1).Value = Format(cell.Value, "dddd")
Next cell
' Форматируем новый столбец
newCol.NumberFormat = "@" ' Текстовый формат
newCol.ColumnWidth = 12
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в Excel и запустите макрос (
Alt+F8→ выберитеAddWeekdayColumn→Выполнить).
Этот макрос не только добавляет дни недели, но и автоматически подбирает ширину столбца. А ещё он проверяет, что выделенные ячейки действительно содержат даты — это защищает от ошибок.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при работе с днями недели. Вот самые распространённые ловушки:
- 🗓️ Ячейка выглядит как дата, но Excel воспринимает её как текст.
Симптом: формулы возвращают
#ЗНАЧ!или неверный день недели.Решение: Преобразуйте текст в дату с помощью
ДАТАЗНАЧилиТЕКСТ.В.ДАТУ(в новых версиях). Пример:=ДЕНЬНЕД(ДАТАЗНАЧ(A2)). - 🌍 Дни недели на английском, хотя Excel русифицирован.
Причина: языковые настройки ячейки не совпадают с системными.
Решение: Выделите ячейку →
Формат ячеек→ вкладкаЧисло→ выберите локаль "Русский (Россия)". - ⏳ Формула работает медленно на больших данных.
Причина: функции вроде
СЧЁТЕСЛИпо большому диапазону тормозят Excel.Решение: Замените на
ПОИСКПОЗили используйте Power Query для предварительной обработки.
Критическая ошибка: если ваша дата хранится как текст в формате "15-05-2026", а регион системы настроен на "MM-DD-YYYY", Excel интерпретирует её как 15-е месяца 05 (май), то есть как несуществующую дату. Все последующие расчёты будут неверными! Всегда проверяйте формат даты через Формат ячеек.
FAQ: Ответы на частые вопросы
Можно ли в Excel получить день недели на другом языке, например, на украинском или казaхском?
Да, но для этого нужно изменить языковые настройки Windows или использовать специальные надстройки. Альтернативный способ — создать таблицу соответствий (например, "понедельник" = "дүйсенбі" для казахского) и использовать ВПР:
=ВПР(ТЕКСТ(A2;"дддд"); ТаблицаПеревода!A:B; 2; ЛОЖЬ)
Где ТаблицаПеревода!A:B — диапазон с парами "русское название" — "перевод".
Как в Excel посчитать количество конкретных дней недели в диапазоне (например, всех понедельников)?
Используйте функцию СЧЁТЕСЛИ с массивом:
=СУММПРОИЗВ(--(ДЕНЬНЕД(A2:A100;2)=1))
Эта формула вернёт количество понедельников (где 1 — номер понедельника при тип_возврата=2) в диапазоне A2:A100.
Почему функция ДЕНЬНЕД возвращает неверный номер дня для исторических дат (например, до 1900 года)?
Excel хранит даты как количество дней, прошедших с 1 января 1900 года (в Windows) или 1904 года (в Mac). Для дат до 1900 года используйте текстовый формат или специализированные надстройки для работы с историческими данными.
Можно ли в Excel автоматически обновлять дни недели при изменении даты?
Да, если дата в ячейке — это формула (например, =СЕГОДНЯ() или =A1+7), то день недели будет пересчитываться автоматически. Если дата введена вручную, используйте F9 для принудительного пересчёта или настройте Автоматический пересчёт в Формулы → Параметры вычислений.
Как вставить день недели в Google Таблицах? Работают ли там те же функции?
В Google Sheets синтаксис аналогичен, но есть нюансы:
- Функция
ТЕКСТработает так же:=ТЕКСТ(A2; "дддд"). - Функция
ДЕНЬНЕДназываетсяWEEKDAY, но поддерживает те же параметры:=WEEKDAY(A2; 2). - Для локализации используйте настройки файла:
Файл → Настройки → Регион.