Формула Excel: Считайте даты по дням недели -

Общая формула

=SUMPRODUCT(--(WEEKDAY(dates)=day_num))

Резюме

Чтобы подсчитать даты по дням недели (например, по понедельникам, вторникам, средам и т. Д.), Вы можете использовать функцию СУММПРОИЗВ вместе с функцией ДЕНЬ НЕДЕЛИ. В показанном примере формула в F4:

=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))

Примечание: «даты» - это именованный диапазон B4: B15.

Объяснение

Вы можете спросить, почему мы не используем COUNTIF или COUNTIF? Эти функции кажутся очевидным решением. Однако без добавления вспомогательного столбца, содержащего значение дня недели, невозможно создать критерий для COUNTIF для подсчета дней недели в диапазоне дат.

Вместо этого мы используем универсальную функцию СУММПРОИЗВ, которая изящно обрабатывает массивы без необходимости использовать Control + Shift + Enter.

Мы используем SUMPRODUCT только с одним аргументом, который состоит из этого выражения:

--(WEEKDAY(dates,2)=E4)

Работая изнутри, функция WEEKDAY конфигурируется с необязательным аргументом 2, который заставляет ее возвращать числа 1-7 для дней с понедельника по воскресенье, соответственно. Это упрощает перечисление дней по порядку с номерами в столбце E.

WEEKDAY затем оценивает каждую дату в названном диапазоне «дат» и возвращает число. Результатом является такой массив:

(1;3;7;1;5;2;7;1;7;5;4;7)

Затем числа, возвращаемые WEEKDAY, сравниваются со значением в E4, равным 1:

(1;3;7;1;5;2;7;1;7;5;4;7)=1

Результатом является массив значений ИСТИНА / ЛОЖЬ.

(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)

СУММПРОИЗВ работает только с числами (не с текстом или логическими значениями), поэтому мы используем двойное отрицание для приведения значений ИСТИНА / ЛОЖЬ к единице и нулям:

(1;0;0;1;0;0;0;1;0;0;0;0)

С одним массивом для обработки SUMPRODUCT суммирует элементы и возвращает результат 3.

Работа с пустыми датами

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

=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))

Умножение на выражение (даты "") - один из способов сократить пустые ячейки.

Интересные статьи...