Suponho que a captura de tela é sua tabela de dados e as duas listas suspensas para especificar os critérios estão em outro lugar.
Esta fórmula, preenchida a partir de B17 no vídeo abaixo, lista os sistemas que correspondem aos critérios:
=IFERROR(INDEX(A$2:A$13,AGGREGATE(15,6,ROW(A$1:A$12)/(INDEX(B$2:H$13,,MATCH(C$18,B$1:H$1))=C$17),ROW()-16)),"")
Esta é uma fórmula de matriz e deve ser inserida com CTRLShiftEnter.
Espero que isso ajude e boa sorte.
______________________________________________________________________________
Como funciona: O interior INDEX()
retorna uma coluna inteira da tabela de dados escolhida com a lista suspensa "Doc" em C$18
. Em seguida, a igualdade =C$17
retorna uma matriz de TRUE/FALSE
valores TRUE
em todas as posições em que uma célula contém a opção na C$17
lista suspensa.
ROW(A$1:A$12)
dá uma matriz dos números sequenciais {1;2;3;...12}
, e isso é dividido pela TRUE/FALSE
matriz.
Em operações aritméticas envolvendo valores lógicos, TRUE
e FALSE
são convertidos em 1 e 0. Assim, a divisão fornece uma matriz de #DIV/0!
erros para cada FALSE
, intercalados com os números de linha de cada ocorrência do valor da lista suspensa.
Esta matriz é alimentada para a AGGREGATE()
função que faz a mesma coisa que SMALL()
faria (função = 15), exceto que tem uma opção para ignorar erros (opção = 6). Assim, AGGREGATE()
ignora os #DIV/0!
erros e fornece uma matriz contendo apenas os números de linha dos valores do menu suspenso de C $ 17, quando a função é preenchida. Este array é usado como o row-num
do outro INDEX()
, que retorna uma lista dos sistemas correspondentes a esses números de linha.
Por fim, IFERROR()
insere um espaço em branco sempre INDEX()
que ocorre um erro, pois ele é preenchido além do número de valores em sua lista de row_nums.
Eu coloquei esta fórmula na linha 17, então o último ROW()-16
inicia a lista com o primeiro row_num na matriz. Então você deve mudar o último "16" para um menor que o número da linha onde você tem a fórmula.