Excel - получить первую запись набора данных - PullRequest
0 голосов
/ 19 июня 2019

У меня простая проблема, но мне трудно найти простое решение.

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

Я хотел бы посчитать количество студентов, прошедших ПЕРВЫЙ раз, без необходимости упорядочивать данные, так как мой набор данных очень большой.

enter image description here

Буду признателен за любой вклад.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

После того, как я немного подумал об этом, я понял, что вам нужно только сосчитать, сколько было случаев, когда кто-то прошел, и не было экзаменов для того же человека с более ранней датой. Единственное предположение, что вы не можете сдавать один и тот же экзамен дважды в один и тот же день, что я считаю разумным.

=SUMPRODUCT((B2:B11="Passed")*(COUNTIFS(A2:A11,A2:A11,C2:C11,"<"&C2:C11)=0))

Я изменил первый результат Джона на «Неудачно», чтобы показать, что он не засчитан.

enter image description here

Вот тот же метод, разбитый на шаги со вспомогательными столбцами:

enter image description here

D2 - это просто

=B2="Passed"

E2

=COUNTIFS(A$2:A$11,A2,C$2:C$11,"<"&C2)

F2

=E2=0

G2

=D2*F2

, помня, что TRUE * TRUE = 1 и любая другая комбинация true и false = 0.

Итак, различные сценарии

(1) В строке 2 Джон потерпел неудачу, поэтому результат в G2 равен 0, хотя у него нет предыдущих экзаменов

(2) В строке 3 Джордж сдал и не сдавал предыдущих экзаменов, поэтому результат в G3 равен 1

(3) В строке 5 Джон уже сдал, но сдал предыдущие экзамены, поэтому результат в G5 все еще равен 0.

SUMPRODUCT - это формула массива. Когда критерии в выражениях сами по себе являются диапазонами, такими как A2: A11 и C2: C11, показания пересматриваются для каждой пары ячеек в диапазоне (A2, C2, затем A3, C3 и т. Д.) И в точности выдают массив результатов. как и в столбце E выше, поэтому при умножении на B2 = «Пройденный» он дает те же результаты, что и в столбце G2 выше, и складывает их вместе, чтобы получить окончательный счет.

1 голос
/ 19 июня 2019

Хм, я примерял ваши данные:

enter image description here

Формула в ячейке E2:

=SUM(--(FREQUENCY(IF((B2:B11="Passed")*(C2:C11=MINIFS(C2:C11,A2:A11,A2:A11)),MATCH(A2:A11,A2:A11,0)),ROW(A2:A11)-ROW(A2)+1)>0))

Введен в виде массива с помощью Ctrl Shift Ввести

Если честно, я бы не назвал это простой проблемой :). Любопытно посмотреть, есть ли другие прямые пути.

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