Формула индексного матча продолжается - PullRequest
0 голосов
/ 25 января 2020

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

Пока что индекс Формула соответствия, кажется, работает нормально, однако она продолжает работать и перечисляет банкиров из других компаний. Как я могу это исправить?

Файл можно скачать здесь: https://drive.google.com/file/d/1fw7yh4AEF1vx3cuG6E_1RBTrTD_k74KD/view?usp=sharing

Ответы [ 3 ]

0 голосов
/ 25 января 2020

Вы можете попробовать следующий подход, вставив приведенную ниже формулу в ячейку E5:

=IFERROR(INDEX(RAW!$D$2:$D$279,SMALL(IF(RAW!$B$2:$B$279=$C$5,ROW(RAW!$D$2:$D$279)-1,10^10),ROWS($A$1:A1))),"")

Это формула массива, поэтому ее необходимо зафиксировать с помощью CTRL + SHIFT + ENTER и затем скопируйте его столько, сколько нужно.

Объяснение:

INDEX is извлекает ссылку на диапазон из определенной GRID на основе ссылки на строку и столбец.

В этом конкретном случае мы намереваемся извлечь ссылки последовательно. Это выполняется с помощью SMALL(IF(RAW!$B$2:$B$279=$C$5,ROW(RAW!$D$2:$D$279)-1,10^10),ROWS($A$1:A1))

. В этой формуле первой частью является формула IF строения ARRAY, как показано ниже

IF(RAW!$B$2:$B$279=$C$5,ROW(RAW!$D$2:$D$279)-1,10^10), которая проверяет ячейки в столбце B, если они соответствуют значению критерия. Если значение совпадает, то возвращается ссылка ROW, а если нет, то возвращается очень большое значение, т.е. 10 ^ 10. Мы вычитаем 1 из ссылки на строку, поскольку данные начинаются со строки 2, поэтому в принципе это должно быть (n-1). Это расположение создает ARRAY, например {1;2;3;4;5;6;7;10000000000....} для значения "Acorda".

Но нам нужно передавать по одному элементу за раз в формулу INDEX, так что это делается с помощью SMALL(IfBasedArray,k), где k part генерируется последовательно ROWS($A$1:A1), который начинается с 1 и увеличивается вниз по мере копирования формулы, что, таким образом, позволяет INDEX возвращать желаемые результаты.

Наконец, когда совпадения заканчиваются, подается большое число, т.е. 10000000000, и генерируется ошибка, которая затем равна по формуле IFERROR для возврата пустым!

0 голосов
/ 27 января 2020

Более простой вариант, чем 2 предыдущих ответа (не требующий ввода формулы CSE или нескольких вложенных INDEX / MATCHES), состоит в том, чтобы иметь пару «вспомогательных» ячеек, скажем, G5 / G6

Начальная строка будет =MATCH(C5,RAW!B:B,0) Это будет первая строка на вашем RAW листе, где будет отображаться выбранная компания

Количество советников будет =COUNTIFS(RAW!B:B,C5) подсчитывает, сколько строк есть для этой конкретной компании

Тогда ваша формула в ячейке E5 станет =IF(D5<=$G$6,INDEX(RAW!$D:$D,$G$5+D5-1),""), которую вы можете перетащить вниз.

снимок экрана, показывающий формулы / результат

0 голосов
/ 25 января 2020

Пожалуйста, примените эту формулу к E5 вашего листа и скопируйте вниз. Обратите внимание, что я создал именованный диапазон Coms, который относится к RAW! B2: B279.

=IFERROR(IF(INDEX(Coms,MATCH($C$5,Coms,0)+ROW()-ROW(E$5))=$C$5,INDEX(Coms,MATCH($C$5,Coms,0)+ROW()-ROW(E$5)),""),"")

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

...