Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Часто требуется не просто хранить даты, а извлекать из них дополнительную информацию: например, определять день недели для планирования, составления графиков или анализа временных рядов. В этой статье мы разберём все возможные способы получения дня недели по дате — от простейших встроенных функций до сложных формул с учётом локализации и пользовательских форматов.
Вы узнаете, как:
- 📅 Использовать функцию
ТЕКСТдля гибкого отображения дней недели на русском и английском - 🔢 Применять
ДЕНЬНЕДдля числового и текстового вывода (от 1 до 7 или"пн"-"вс") - 📊 Создавать динамические таблицы с автоматическим определением выходных дней
- ⚡ Оптимизировать формулы для работы с большими массивами данных (10 000+ строк)
Все примеры протестированы в Excel 2010–2026 (включая Microsoft 365) и адаптированы для русских региональных настроек. Готовые файлы с формулами можно скачать в конце статьи.
1. Базовый способ: функция ДЕНЬНЕД
Самый простой метод — встроенная функция ДЕНЬНЕД (англ. WEEKDAY). Она возвращает номер дня недели для указанной даты, где по умолчанию 1 = воскресенье, а 7 = суббота.
Синтаксис функции:
=ДЕНЬНЕД(дата; [тип_возврата])
- 📌
дата— ячейка с датой (например,A1) или дата в формате"ДД.ММ.ГГГГ" - 🔄
[тип_возврата]— необязательный аргумент, определяющий систему нумерации (по умолчанию = 1)
Примеры работы:
| Формула | Результат (дата: 15.07.2026) | Пояснение |
|---|---|---|
=ДЕНЬНЕД("15.07.2026") | 2 | Понедельник (1=вс, 2=пн,...) |
=ДЕНЬНЕД("15.07.2026"; 2) | 1 | Понедельник (1=пн, 2=вт,...) |
=ДЕНЬНЕД("15.07.2026"; 3) | 0 | Понедельник (0=пн, 1=вт,...) |
Важно: В русских версиях Excel нумерация по умолчанию начинается с воскресенья (1), а в английских — с понедельника (1). Это частая причина ошибок при копировании формул из зарубежных источников.
⚠️ Внимание: Если функция возвращает ошибку#ЗНАЧ!, проверьте формат ячейки с датой. Он должен бытьДата, а неТекстилиОбщий. Исправьте формат черезФормат ячеек → Дата.
2. Текстовый вывод дня недели (пн, вт, ср...)
Если нужен не номер, а сокращённое или полное название дня недели, используйте функцию ТЕКСТ (англ. TEXT). Она преобразует дату в текстовый формат с учётом региональных настроек.
Синтаксис:
=ТЕКСТ(дата;"формат")
Примеры форматов для русских настроек:
- 📌
"ддд"— короткое название ("пн","вт") - 📌
"дддд"— полное название ("понедельник","вторник") - 📌
"[$-ru-RU]дддд"— принудительная русская локализация (актуально для английской версии Excel)
Практические формулы:
=ТЕКСТ(A1;"ддд") →"пн"
=ТЕКСТ(A1;"дддд") →"понедельник"
=ТЕКСТ(A1;"[$-en-US]dddd") →"Monday" (даже в русской версии)
Преимущество метода: гибкость отображения (можно комбинировать с другими текстовыми функциями). Недостаток: результат — текст, его нельзя использовать в вычислениях (например, для подсчёта выходных дней).
Убедитесь, что ячейка с датой имеет формат"Дата"|Проверьте регистр в формате ("дддд", а не"ДДДД")|Для английского вывода добавьте локаль [$−en-US]|Используйте & для объединения с другим текстом (например, =ТЕКСТ(A1;"дддд")&","&A1)-->
3. Продвинутый подход: массивы и пользовательские функции
Для автоматизации рутинных задач (например, маркировки выходных дней в большом диапазоне) полезно создавать пользовательские функции на VBA или использовать формулы массива.
Пример 1. Формула массива для маркировки выходных:
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)>5; [список_праздников]);"Выходной";"Рабочий")
Где [список_праздников] — диапазон с датами праздников (например, B1:B10).
Пример 2. VBA-функция для русского названия дня:
Function РусскийДеньНедели(d As Date) As String
Dim дни As String
дни = Array("воскресенье","понедельник","вторник","среда","четверг","пятница","суббота")
РусскийДеньНедели = дни(Weekday(d, vbSunday) - 1)
End Function
Использование в ячейке: =РусскийДеньНедели(A1).
⚠️ Внимание: Пользовательские функции VBA работают только в файлах с расширением .xlsm (с поддержкой макросов). При открытии такого файла Excel может показать предупреждение о безопасности — разрешите выполнение макросов, если доверяете источнику.
4. Динамические таблицы с автоматическим определением дней недели
Если вам нужно анализировать большие массивы данных (например, журналы посещаемости или продаж), удобно создать динамическую таблицу с автоматическим заполнением дней недели.
Шаги для создания:
- Выделите диапазон с датами (например,
A1:A100). - Перейдите на вкладку
Вставка → Таблица(или нажмитеCtrl+T). - Добавьте столбец с формулой:
=ТЕКСТ([@Дата];"ддд")(где
Дата— заголовок вашего столбца). - Excel автоматически применит формулу ко всем строкам таблицы.
Преимущества:
- ✅ Автоматическое обновление при добавлении новых строк
- ✅ Возможность фильтрации по дням недели (например, показать только"пн")
- ✅ Легко добавлять вычисляемые столбцы (например,"Выходной/Рабочий")
Как добавить пользовательский формат для дней недели?
1. Выделите ячейки с датами.
2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
3. Перейдите на вкладку Число → Все форматы.
4. В поле Тип введите: дд.мм.гггг, дддд (пример:"15.07.2026, понедельник").
5. Нажмите ОК. Теперь даты будут отображаться с днём недели, но оставаться датами для вычислений.
5. Ошибки и их решения
При работе с датами и днями недели пользователи часто сталкиваются с типичными ошибками. Разберём самые распространённые:
| Ошибка | Причина | Решение |
|---|---|---|
#ЗНАЧ! | Ячейка содержит текст, а не дату | Преобразуйте текст в дату через ДАТАЗНАЧ или измените формат ячейки |
#ИМЯ? | Опечатка в названии функции | Проверьте регистр: ДЕНЬНЕД, а не деньнед |
| Некорректный день недели | Неверный тип_возврата в ДЕНЬНЕД | Укажите явный аргумент: =ДЕНЬНЕД(A1; 2) для недели, начинающейся с понедельника |
| Дни недели на английском | Некорректные региональные настройки | Используйте формат [$-ru-RU]дддд или измените язык в настройках Windows |
Совет для больших файлов: Если формулы ТЕКСТ или ДЕНЬНЕД тормозят Excel при работе с 50 000+ строк, замените их на столбец с Power Query:
- Выделите диапазон →
Данные → Из таблицы/диапазона. - В редакторе Power Query добавьте пользовательский столбец с формулой:
= Date.DayOfWeek([Дата], Day.Monday) - Загрузите данные обратно в Excel.
1. Выделите диапазон с датами.
2. Перейдите на Главная → Условное форматирование → Создать правило.
3. Выберите Использовать формулу... и введите:
=ИЛИ(ДЕНЬНЕД(A1;2)>5; A1=ДАТА(2026;1;1))
(где ДАТА(2026;1;1) — дата новогоднего праздника).
4. Задайте формат (например, красный фон) и нажмите ОК.-->
6. Практическое применение: анализ временных данных
Знание дня недели позволяет решать реальные бизнес-задачи. Рассмотрим тричных сценария:
Сценарий 1. Анализ продаж по дням недели
Допустим, у вас есть таблица продаж с датами. Чтобы узнать, в какие дни недели продажи максимальны:
- Добавьте столбец с днём недели:
=ТЕКСТ(B2;"дддд"). - Создайте сводную таблицу:
- 📊 Строки:
День недели - 📈 Значения:
Сумма по продажам
- 📊 Строки:
Сценарий 2. Планирование смен
Для составления графика работы сотрудников:
=ЕСЛИ(ДЕНЬНЕД(A2;2)<6;"Дневная смена";"Ночная смена")
Сценарий 3. Расчёт рабочих дней между датами
Функция ЧИСТРАБДНИ (англ. NETWORKDAYS) автоматически исключает выходные:
=ЧИСТРАБДНИ("15.07.2026";"31.07.2026") → 11 (рабочих дней)
=ЧИСТРАБДНИ.МЕЖД("15.07.2026";"31.07.2026"; ДиапазонПраздников),
где ДиапазонПраздников — список дат праздников (например, D1:D5).-->
7. Альтернативные методы (без формул)
Если вам нужно одноразово определить день недели или вы работаете в Excel Online с ограниченными функциями, воспользуйтесь этими способами:
Способ 1. Ручное форматирование
- Выделите ячейки с датами.
- Нажмите
Ctrl+1→Формат ячеек → Число → Все форматы. - В поле
Типвведите:- 📅
дд.мм.гггг, дддд→"15.07.2026, понедельник" - 📅
дддд, дд ммм→"понедельник, 15 июл"
- 📅
Способ 2. Power Query (Excel 2016+)
- Импортируйте данные в Power Query (
Данные → Получение данных → Из таблицы/диапазона). - Добавьте пользовательский столбец с формулой:
= Date.DayOfWeekName([Дата]) - Загрузите данные обратно.
- 🌐 PlanFix Календарь (русский интерфейс)
- 🌐 Epoch Converter (английский, но с поддержкой русского языка)
- ✅ Работают:
ДЕНЬНЕД,ТЕКСТ,ЧИСТРАБДНИ - ❌ Не работают: пользовательские функции VBA и некоторые надстройки
Способ 3. Онлайн-конвертеры
Для разовых задач можно использовать бесплатные сервисы:
⚠️ Внимание: При копировании результатов из онлайн-сервисов в Excel проверяйте формат ячеек. Часто даты вставляются как текст, что приведёт к ошибкам в формулах.
FAQ: Частые вопросы
Как сделать так, чтобы в Excel день недели автоматически обновлялся при изменении даты?
Используйте формулы, а не ручное форматирование. Например, если в ячейке A1 дата, введите в B1:
=ТЕКСТ(A1;"дддд")
Теперь при изменении A1 значение в B1 будет обновляться автоматически. Для принудительного пересчёта нажмите F9.
Почему функция ДЕНЬНЕД возвращает неверный день недели?
Скорее всего, проблема в аргументе тип_возврата. По умолчанию (=ДЕНЬНЕД(A1)) неделя начинается с воскресенья (1). Чтобы понедельник был первым днём, используйте:
=ДЕНЬНЕД(A1; 2)
Также проверьте региональные настройки Excel: Файл → Параметры → Язык.
Можно ли в Excel получить день недели на английском, если у меня русская версия?
Да, используйте формат с явным указанием локали:
=ТЕКСТ(A1;"[$-en-US]dddd")
Это вернёт полное название дня на английском ("Monday","Tuesday" и т. д.), независимо от языка интерфейса Excel.
Как посчитать количество конкретных дней недели (например, всех понедельников) в диапазоне?
Используйте функцию СЧЁТЕСЛИ с массивом:
=СУММПРОИЗВ(--(ТЕКСТ(A1:A100;"ддд")="пн"))
Эта формула вернёт количество понедельников в диапазоне A1:A100. Для других дней замените "пн" на "вт", "ср" и т. д.
Важно: Это формула массива — в старых версиях Excel (до 2019) завершайте ввод нажатием Ctrl+Shift+Enter.
Как в Excel Online определить день недели? Все функции возвращают ошибку.
Excel Online поддерживает те же функции, что и десктопная версия, но с ограничениями:
Если формулы не работают:
- Проверьте формат ячейки (должен быть
Дата). - Обновите страницу (
F5). - Попробуйте альтернативный синтаксис на английском:
=WEEKDAY(A1, 2)