Объединение Excel COUNTIFS с агрегатными функциями - PullRequest
1 голос
/ 01 апреля 2012

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

Имя - Оценка ученика - Дата курса A - Дата курса B - Дата курса C и т. Д ...

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

Я ищу какой-нибудь способ подсчета всех учеников с оценкой конкретной оценки, которые посещали курсы между конкретными датами. Например, подсчитайте всех учащихся с оценкой «С», которые посещали курсы с 1 января 2012 года по 31 марта 2012 года.

Я полагаю, что окончательная формула будет представлять собой комбинацию COUNTIFS и MAX в столбцах диапазона дат, но я не понимаю, как можно применить это построчно.

Все предложения очень ценятся!

С наилучшими пожеланиями, Chris

1 Ответ

2 голосов
/ 01 апреля 2012

Если у вас есть оценки в B2:B100 и даты в 5 столбцах C2:G100, тогда вы можете использовать эту формулу для подсчета числа студентов с определенной оценкой, которые прошли курсы в определенный период дат.

=SUMPRODUCT((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),{1;1;1;1;1})>0)+0)

, где J2 и K2 - даты начала и окончания периода (1-Jan-2012 и 1-Mar-2012), а I2 - особая оценка (C)

часть {1;1;1;1;1} зависит от количества столбцов даты, поэтому, если имеется 7 столбцов даты, вам нужно изменить это значение на {1;1;1;1;1;1;1} ..... или вы сделаете формулу динамически настраиваемой с помощью этой версии

=SUM((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),TRANSPOSE(COLUMN(C2:G100))^0)>0)+0)

Последняя формула, однако, является "формулой массива", которую необходимо подтвердить с помощью CTRL+SHIFT+ENTER

Обновление

Для количества различных оценок в пределах определенного диапазона дат, если предположить, что у вас есть конечный список возможных оценок, перечислите их где-нибудь на рабочем листе, например, M2:M10 и затем вы можете использовать эту "формулу массива"

=SUM(1-ISNA(MATCH(M$2:M$10,IF(MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2),{1;1;1;1;1}),B$2:B$100),0)))

подтверждено CTRL+SHIFT+ENTER

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...