1

Эта формула ниже работает чудесно!

Но у меня возникли проблемы с тем, чтобы обернуть голову вокруг происходящего.

Может кто-нибудь объяснить, что здесь происходит, шаг за шагом.

У меня есть хорошее знание формул и VBA, у меня есть базовые знания формул массива, но это озадачило меня.

Оценка формулы в Excel действительно не помогла.

=INDEX($B$2:$B$11,MATCH(1,INDEX(($B$2:$B$11=LARGE($B$2:$B$11,ROWS(F$1:F1)))*(COUNTIF(F$1:F1,$A$2:$A$11)=0),),0))

1 ответ1

0

Как правило, формулы начинаются внутри:

  • ROWS(F$1:F1) совпадает с ROW()-1 , так что это просто ранг
  • LARGE($B$2:$B$11,ROWS(..)) возвращает оценку фактического ранга.
    эта формула составлена для работы с использованием одной и той же формулы в обоих столбцах. Вы можете оставить только это во втором столбце для того же результата
  • $B$2:$B$11=LARGE(...) приводит массив с true где оценка в столбце B равна фактической
  • COUNTIF(F$1:F1,$A$2:$A$11)=0 .
    Это не имеет смысла в этом столбце, просто массив true .
    Однако в столбце E первым параметром будет E$1:E1 , что дает 0 для всех строк, в которых имя еще не указано в столбце E. =0 преобразует его в список true значений, еще не перечисленных, и false для имен уже в списке.
  • INDEX((..)*(),) вычисляет пересечение двух предыдущих массивов (оценка в соответствии с фактическим рангом и именем, которое еще не указано), в результате получается массив
  • MATCH(1,INDEX(..),0) возвращает индекс первого элемента, удовлетворяющего критериям
  • INDEX($B$2:$B$B11,MATCH(..)) возвращает следующее имя / счет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .