Я хочу составить 10 лучших результатов, и когда я использую функцию индекса и сопоставления для сопоставления оценок с кодами, если более одного кода имеют одинаковый балл, он будет сопоставлять его только с первым.
Как пропустить первое вхождение, чтобы сопоставить его со следующим
Я пробовал использовать массив с небольшими и строковыми функциями, но смог найти способ применить формулу
на снимке экрана показано, как данные представляются после использования индекса и функции сопоставления. Посмотрите, как ячейки с 3 по 5 имеют одинаковый код, соответствующий счету (puntaje), за исключением того, что другие коды также соответствуют счету, но функция возвращает только первое вхождение.
Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Поскольку сейчас написано, трудно точно сказать, о чем вы спрашиваете.
Если у вас более ранняя версия Excel, подумайте о том, что я сделал здесь: stackoverflow.com/a/58640367/4961700, если это поможет, проголосуйте...
на снимке экрана показано, как данные представляются после использования индекса и функции сопоставления. Посмотрите, как ячейки с 3 по 5 имеют одинаковый код, соответствующий оценке, за исключением того, что существуют и другие коды, которые также соответствуют оценке, но функция возвращает только первое вхождение.
Предполагая отсутствие ограничений версии для ваших тегов
Table
из своих данных и Name
его Scores
=VSTACK(Scores[#Headers],TAKE(SORT(Scores,2,-1),10))
Если ваша таблица данных уже отсортирована по Puntaje
, вы можете использовать:
=VSTACK(Scores[#Headers], TAKE(Scores,10))
Обратите внимание, что приведенное выше вернет только первые десять (10) записей. Если вы хотите вернуть более десяти записей (поскольку у вас больше баллов в первой десятке, вам следует использовать:
=VSTACK(Scores[#Headers],FILTER(Scores,Scores[Puntaje]>=LARGE(Scores[Puntaje],10)))
Если у вас более ранняя версия Excel, вы можете попробовать одно из следующих действий:
=INDEX(Scores,-1+AGGREGATE(14,6,1/(Scores[Puntaje]>=LARGE(Scores[Puntaje],10))*ROW(Scores),ROW(INDEX($A:$A,1):INDEX($A:$A,COUNT(1/(Scores[Puntaje]>=LARGE(Scores[Puntaje],10)))))),{1,2})
или, для еще более ранних версий:
=INDEX(Scores, IF(1, -1 + AGGREGATE(14, 6, 1 / (Scores[Puntaje] >= LARGE(Scores[Puntaje], 10)) * ROW(Scores), ROW(INDEX($A:$A, 1):INDEX($A:$A, COUNT(1 / (Scores[Puntaje] >= LARGE(Scores[Puntaje], 10))))))), {1,2})
Последние два могут или не должны быть введены как формулы массива.
Для массива введите формулу, после ввода
формулу в ячейку или строку формул, удерживая нажатой
ctrl + shift, нажимая enter. Если бы ты сделал это
правильно, Excel поставит формулу в фигурные скобки {...}
.
спасибо, это действительно помогло. в конце я использовал сводную таблицу и получил нужный мне ответ.
Используйте функции
FILTER()
иTAKE()
.