Как в Excel узнать день недели: от простых функций до автоматизации календарей

Превращаем даты в дни недели: зачем это нужно в Excel

Вы когда-нибудь открывали таблицу с сотнями дат и понимали, что без информации о дне недели эти данные практически бесполезны? Возможно, вам нужно проанализировать продажи по дням недели, спланировать график работы сотрудников или просто разобраться, на какой день выпадает важное событие. Excel предлагает минимум 7 различных способов определить день недели — от элементарных функций до сложных формул с учетом праздников и региональных особенностей.

Эта статья не просто перечислит функции — она научит вас выбирать оптимальный метод в зависимости от задачи. Например, знали ли вы, что функция ТЕКСТ может вернуть день недели на русском языке, а ДЕНЬНЕД — только номер? Или что с помощью ВЫБОР можно создать кастомное отображение, где понедельник будет не "1", а "Рабочий день"? Мы разберём даже такие нюансы, как автоматическое подсвечивание выходных дней в больших таблицах — это сэкономит вам часы ручной работы.

Способ 1: Функция ДЕНЬНЕД — базовый инструмент с подводными камнями

Начнём с самой простой функции, которая есть во всех версиях Excel — ДЕНЬНЕД(дата; [возврат]). Она возвращает номер дня недели для указанной даты, где по умолчанию воскресенье = 1, а суббота = 7. Но здесь есть три критичных нюанса:

  • 📅 Формат аргумента: функция принимает дату в виде ссылки на ячейку (например, A1), результата другой функции (например, ДАТА(2026;5;15)) или последовательности чисел (например, 45415 для 15 мая 2026).
  • 🔄 Параметр "возврат": если его опустить, воскресенье будет "1". Но можно указать 2, чтобы понедельник стал "1" (европейская система), или 3, где понедельник = 0.
  • ⚠️ Ловушка для новичков: Excel хранит даты как числа (количество дней с 1 января 1900 года). Если ваша функция возвращает странное большое число — проверьте формат ячейки!

Пример использования:

=ДЕНЬНЕД(A1; 2)  
⚠️ Внимание: Если вы работаете с данными из внешних источников (например, выгружаете даты из 1С), сначала проверьте, в каком формате они хранятся. Часто "даты" на самом деле являются текстом — в этом случае ДЕНЬНЕД вернёт ошибку #ЗНАЧ!. Используйте ДАТАЗНАЧ для преобразования.
📊 Какой формат дней недели вам нужнее?
Числовой (1-7)
Текстовый (пн-вс)
Сокращённый (Пн, Вт...)
Полный (понедельник, вторник)

Способ 2: Функция ТЕКСТ — день недели на русском языке

Если вам нужны не цифры, а слова — "понедельник", "вторник" и так далее — используйте функцию ТЕКСТ(дата; "дддд"). Это универсальный инструмент форматирования, который преобразует дату в текстовый день недели на языке вашей системы.

Ключевые особенности:

  • 🌍 Локализация: Если ваш Excel настроен на русский язык, функция вернёт "понедельник", на английском — "Monday". Чтобы изменить язык, нужно поменять настройки системы (не Excel!).
  • 📏 Форматы отображения:
    • "ддд" — сокращённое название ("пн", "вт")
    • "дддд" — полное название ("понедельник")
    • "ddd" — сокращённое на английском ("Mon", "Tue")
  • 🔗 Комбинация с другими функциями: Можно вложить ТЕКСТ в ЕСЛИ, чтобы, например, подсвечивать выходные.

Пример с условным форматированием:

=ЕСЛИ(ИЛИ(ТЕКСТ(A1;"дддд")="суббота"; ТЕКСТ(A1;"дддд")="воскресенье"); "Выходной"; "Рабочий день")
ФорматПример кодаРезультат для 15.05.2026 (среда)
"ддд"=ТЕКСТ(A1;"ддд")ср
"дддд"=ТЕКСТ(A1;"дддд")среда
"ddd"=ТЕКСТ(A1;"ddd")Wed
"dddd"=ТЕКСТ(A1;"dddd")Wednesday

Способ 3: ВЫБОР + ДЕНЬНЕД — кастомные названия дней

Иногда стандартные названия дней недели не подходят. Например, вам нужно:

  • 📊 Отображать "Рабочий день" вместо "понедельник-пятница"
  • 🏭 Использовать производственный календарь ("День 1", "День 2")
  • 🎭 Создать тематическое оформление ("День Меркурия", "День Венеры")

В таких случаях комбинация ВЫБОР + ДЕНЬНЕД становится спасением. Функция ВЫБОР позволяет назначить каждому дню недели своё уникальное значение.

Пример для производственного календаря (понедельник = День 1, воскресенье = День 7):

=ВЫБОР(ДЕНЬНЕД(A1;2); "День 1"; "День 2"; "День 3"; "День 4"; "День 5"; "День 6"; "День 7")

А вот как можно автоматически определять тип дня для графика работы:

=ВЫБОР(ДЕНЬНЕД(A1;2);

"Рабочий день (полный)";

"Рабочий день (полный)";

"Рабочий день (полный)";

"Рабочий день (полный)";

"Рабочий день (сокращённый)";

"Выходной";

"Выходной")

☑️ Проверка формулы ВЫБОР

Выполнено: 0 / 4

Способ 4: Условное форматирование — визуализация дней недели

Когда таблица содержит сотни дат, гораздо удобнее визуально выделять выходные или конкретные дни, чем читать текстовые значения. Для этого идеально подходит условное форматирование с формулами.

Алгоритм настройки:

  1. Выделите диапазон с датами.
  2. Перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите тип правила Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу (примеры ниже).
  5. Задайте формат (например, красный фон для выходных).

Формулы для разных задач:

  • 🔴 Выделить выходные (суббота и воскресенье):
    =ИЛИ(ДЕНЬНЕД(A1;2)>5; ТЕКСТ(A1;"дддд")="воскресенье")
  • 🟢 Выделить рабочие дни (пн-пт):
    =ДЕНЬНЕД(A1;2)<6
  • 🟣 Выделить конкретный день (например, среду):
    =ДЕНЬНЕД(A1;2)=3
  • 🟡 Выделить даты, приходящиеся на 1-е число месяца (если оно не выходной):
    =И(ДЕНЬ(A1)=1; ДЕНЬНЕД(A1;2)<6)
⚠️ Внимание: При копировании формул условного форматирования Excel автоматически подстраивает ссылки под новый диапазон. Если вам нужно зафиксировать столбец (например, всегда проверять столбец A), используйте абсолютные ссылки: $A1 вместо A1.
Как применить форматирование ко всей таблице автоматически?

1. Выделите первую ячейку с датой и создайте правило условного форматирования.
2. В формуле используйте относительные ссылки (например, A1).
3. Примените правило ко всему диапазону дат — Excel автоматически скорректирует ссылки для каждой ячейки (например, для ячейки B5 формула станет B5).

Способ 5: Power Query — автоматическое определение дней в больших данных

Если вы работаете с тысячами строк данных (например, выгружаете отчёты из CRM или бухгалтерских программ), ручное добавление столбца с днём недели станет кошмаром. Здесь на помощь приходит Power Query — инструмент для преобразования данных, встроенный в Excel 2016+.

Пошаговая инструкция:

  1. Выделите вашу таблицу и перейдите на вкладку Данные → Из таблицы/диапазона (или Получить данные → Из таблицы/диапазона в Excel 2019+).
  2. В открывшемся редакторе Power Query выделите столбец с датами.
  3. Перейдите на вкладку Добавить столбец → Дата и время → День → Название дня.
  4. Выберите формат отображения (полное или сокращённое название).
  5. Нажмите Закрыть и загрузить — новый столбец с днями недели появится в вашей таблице.

Преимущества этого метода:

  • Автоматизация: При обновлении исходных данных столбец с днями недели обновится автоматически.
  • 🔄 Гибкость: Можно добавить сразу несколько столбцов — например, название дня, номер дня недели и квартал.
  • 🌐 Локализация: Power Query учитывает языковые настройки системы (в отличие от формул, где иногда приходится вручную прописывать дни на нужном языке).

Для продвинутых пользователей: в Power Query можно создать кастомную функцию, которая будет не только определять день недели, но и проверять, является ли дата праздничной (на основе отдельной таблицы с праздниками).

Способ 6: VBA-макросы — для сложных задач и автоматизации

Когда стандартных функций недостаточно (например, нужно учитывать региональные праздники или создавать динамические календари), на помощь приходит VBA. С помощью макросов можно:

  • 📅 Создавать календари с автоматическим подсвечиванием выходных и праздников.
  • 🔄 Динамически обновлять дни недели при изменении дат.
  • 📊 Генерировать отчёты по дням недели (например, суммировать продажи по понедельникам).

Пример макроса, который добавляет столбец с днями недели на русском языке:

Sub AddWeekdayColumn()

Dim rng As Range

Dim cell As Range

Dim lastRow As Long

' Определяем последний ряд с данными в столбце A

lastRow = Cells(Rows.Count, "A").End(xlUp).Row

Set rng = Range("A1:A" & lastRow)

' Добавляем новый столбец B с заголовком

Range("B1").Value = "День недели"

' Заполняем столбец днями недели

For Each cell In rng

If IsDate(cell.Value) Then

cell.Offset(0, 1).Value = Format(cell.Value, "dddd")

End If

Next cell

' Автоподбор ширины столбца

Columns("B").AutoFit

End Sub

Как использовать этот макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Закройте редактор и запустите макрос через Вид → Макросы → AddWeekdayColumn → Выполнить.
⚠️ Внимание: Перед запуском макросов убедитесь, что в настройках Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов). В противном случае макрос не сработает.

Способ 7: Динамические массивы (Excel 365) — будущее работы с датами

Если вы используете Excel 365 или Excel 2021, у вас есть доступ к динамическим массивам — революционному инструменту, который позволяет обрабатывать целые диапазоны данных одной формулой. Для дней недели это означает возможность:

  • 🔥 Одношаговое заполнение: Одна формула вернёт дни недели для всего столбца.
  • 🔄 Автоматическое обновление: При добавлении новых дат результат расширяется автоматически.
  • 📊 Комбинация с другими функциями: Например, можно сразу подсчитать количество рабочих дней.

Пример: вернуть дни недели для всего столбца A (начиная с A2):

=ТЕКСТ(A2:A100;"дддд")

Эта формула автоматически заполнит все ячейки рядом с датами в столбце A (от A2 до A100 или до первой пустой ячейки).

Более сложный пример: подсчёт рабочих дней (пн-пт) в диапазоне:

=СУММПРОИЗВ(--(ДЕНЬНЕД(A2:A100;2)<6); --(A2:A100<>""))

Эта формула:

  1. Проверяет каждый день недели (ДЕНЬНЕД(...,2)<6 — рабочие дни).
  2. Игнорирует пустые ячейки (A2:A100<>"").
  3. Возвращает количество рабочих дней в диапазоне.

FAQ: Ответы на частые вопросы о днях недели в Excel

Можно ли в Excel определить, является ли день праздничным?

Стандартных функций для этого нет, но есть три способа:

  1. Ручной список: Создайте таблицу с датами праздников и используйте ВПР или ПОИСКПОЗ для проверки.
  2. Power Query: Загрузите календарь праздников (например, с data.gov.ru) и объедините с вашими данными.
  3. VBA: Напишите макрос, который будет проверять даты по заранее определённому списку.

Пример формулы с ручным списком (предположим, праздники в диапазоне D2:D10):

=ЕСЛИ(СЧЁТЕСЛИ($D$2:$D$10; A1)>0; "Праздник"; ТЕКСТ(A1; "дддд"))
Почему функция ДЕНЬНЕД возвращает ошибку #ЗНАЧ?

Это происходит в трёх случаях:

  1. Ячейка содержит текст, а не дату. Проверьте формат ячейки (должен быть "Дата"). Используйте ДАТАЗНАЧ для преобразования текста в дату.
  2. Неправильный регион: В некоторых региональных настройках Excel использует другую систему дат. Проверьте Файл → Параметры → Язык → Региональные параметры.
  3. Отрицательная дата: Excel не поддерживает даты до 1 января 1900 года. Если ваша дата раньше — используйте альтернативные методы (например, текстовые функции).
Как сделать так, чтобы день недели обновлялся автоматически при изменении даты?

Есть четыре варианта:

  1. Формулы: Используйте ТЕКСТ или ДЕНЬНЕД — они пересчитываются автоматически.
  2. Power Query: Как описано в Способе 5, это самый надёжный метод для больших данных.
  3. Таблицы Excel: Преобразуйте диапазон в таблицу (Ctrl + T), и формулы будут обновляться при добавлении новых строк.
  4. VBA: Напишите макрос, который срабатывает при изменении ячейки (событие Worksheet_Change).

Пример кода для автоматического обновления при изменении даты:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cell As Range

For Each cell In Target

If cell.Column = 1 Then ' Если изменена ячейка в столбце A

cell.Offset(0, 1).Value = Format(cell.Value, "dddd")

End If

Next cell

End Sub

Можно ли в Excel получить название дня недели на английском, если у меня русская версия?

Да, есть три способа:

  1. Функция ТЕКСТ с английским форматом:
    =ТЕКСТ(A1; "[$-409]dddd")

    Здесь 409 — это код локали для английского (США).

  2. Power Query: При загрузке данных выберите английский язык в параметрах региона.
  3. VBA: Используйте функцию Format с явным указанием локали:
    =Format(cell.Value, "dddd", vbMonday, vbUseSystemDayOfWeek)

    Но для этого потребуется написать пользовательскую функцию.

Обратите внимание: в некоторых версиях Excel код локали может не работать. В этом случае проще создать таблицу соответствия русских и английских названий и использовать ВПР.

Как в Excel посчитать количество конкретных дней недели в диапазоне?

Используйте функцию СУММПРОИЗВ (или SUMPRODUCT в английской версии) с условием. Примеры:

  1. Количество понедельников в диапазоне A1:A100:
    =СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A100;2)=1))
  2. Количество выходных (суббот и воскресений):
    =СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A100;2)>5))
  3. Количество рабочих дней (пн-пт):
    =СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A100;2)<6))

Для динамических массивов (Excel 365) можно упростить формулу, убрав СУММПРОИЗВ:

=СЧЁТЕСЛИ(ДЕНЬНЕД(A1:A100;2); 1)