Итак, глядя на ваш предыдущий вопрос, а также на этот, становится очевидным, что вы хотите ранжировать студентов по количеству A, затем по B и т.д., И разбить эти ранги на основе сумм оценок. для каждого предмета.
Имея это в виду, вот формула столбца no helper, чтобы сделать именно это:
Массив введите (Ctrl+Shift+Enter) следующую формулу в M5
и скопируйте-вставьте / заполните вниз в оставшуюся часть столбца (не забудьте удалить {
и the }
):
{=
SUM(
1,
--(
MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))
>INDEX(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9))
),
(
MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))
=INDEX(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9))
)
*(
MMULT(IFERROR(--$B$5:$L$9,0),--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))
>INDEX(MMULT(IFERROR(--$B$5:$L$9,0),--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9))
)
)}
Ниже приведен эквивалентный сокращенный вариант приведенной выше формулы. Я настоятельно советую не использовать его, а вместо этого использовать предварительно проверенную версию формулы. Это сделает формулу намного проще в обслуживании.
{=SUM(1,--(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))>INDEX(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9))),(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))=INDEX(MMULT(($B$5:$L$9="A")*6^2+($B$5:$L$9="B")*6^1+($B$5:$L$9="C")*6^0,--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9)))*(MMULT(IFERROR(--$B$5:$L$9,0),--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9)))))>INDEX(MMULT(IFERROR(--$B$5:$L$9,0),--(0<ROW(INDEX(M:M,1):INDEX(M:M,COLUMNS($B$5:$L$9))))),1+ROW()-ROW($B$5:$L$9))))}
Объяснение:
Глядя на структуру предварительно подтвержденной формулы, становится ясно, что она по сути совпадает с "правильной" формулой, введенной в ранг ранга из моего предыдущего ответа.
{=SUM(1,--($G$2:$G$6>G2),($G$2:$G$6=G2)*($H$2:$H$6>H2))}
с RESULT
и POINT
вспомогательные столбцы заменяются с MMULT(…)
функции, а также ссылки одной ячейки в этих столбцах заменены INDEX(MMULT(…),1+ROW()-ROW($B$5:$L$9))
Если вы хотите понять, как здесь используется функция MMULT()
, вы можете начать с изучения более простого использования в моем ответе на другой вопрос.
Должно быть достаточно очевидно, как настроить формулу для большего количества оценок. Например, чтобы добавить D
, добавьте +($B$5:$L$9="D")*6^0
к концу остальных и увеличьте остальные степени.
Как упоминалось в ответе на предыдущий вопрос, если таблица будет расширена за счет большего количества предметов, число 6
должно быть увеличено, чтобы оно было как минимум на один больше, чем новое количество предметов в таблице.