Динамическая сортировка списка на основе связанных значений со значениями прерывателя связей - PullRequest
0 голосов
/ 09 ноября 2018

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

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

Короткий пример таблицы:

Andy - 1 1 2 3
Brad - 0 1 2 3
Cade - 1 2 3 4
Dane - 1 1 1 2

Желаемый результат:

Cade - 1
Andy - 1
Dane - 1

Разбиватель не так важен, и яЯ могу использовать условное форматирование для удаления потомков в 0, но я все еще не могу понять это.Самые близкие формулы, которые я нашел в моем поиске:

=INDEX($A$10:$A$9,MATCH(ROWS($C$1:C1),$C$1:$C$9,0)) 

Эта не работает, потому что она возвращает # N / A для почти всех студентов, которые связаны.

=IFERROR(INDEX($C$1:$C$9,MATCH(SMALL(NOT($C$1:$C$9="")*IF(ISNUMBER($C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9)+SUM(--ISNUMBER($C$1:$C$9))),ROWS($C$1:C1)+SUM(--ISBLANK($C$1:$C$9))),NOT($C$1:$C$9="")*IF(ISNUMBER($C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9),COUNTIF($C$1:$C$9,"<="&$C$1:$C$9)+SUM(--ISNUMBER($C$1:$C$9))),0)),"")

У меня была эта формула, которая может обрабатывать связи, но она должна быть OFFSET, но я не знаю как, поскольку это формула массива.Кроме того, с обеими этими формулами это меняет ранги с самыми низкими значениями наверху.Если бы кто-нибудь мог мне помочь, я был бы очень признателен.Я делаю это так, чтобы я мог дать всем студентам возможность участвовать на равных.

1 Ответ

0 голосов
/ 09 ноября 2018

Использовать вспомогательный столбец. В этом столбце введите следующую формулу:

=IF(B1=0,"n/a",SUMPRODUCT(B1:E1/10^(COLUMN(B1:E1)-MIN(COLUMN(B1:E1)))))

Это вернет одно число на основе рейтинга.

![enter image description here

Тогда в вашем выходном столбце используйте:

=IFERROR(INDEX(A:A,MATCH(LARGE(F:F,ROW(1:1)),F:F,0)),"")

![![enter image description here

Затем простой VLOOKUP для возврата первого числа:

=IF(I1<>"",VLOOKUP(I1,A:B,2,FALSE),"")

![![enter image description here

...