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$17retorna uma matriz de TRUE/FALSEvalores TRUEem todas as posições em que uma célula contém a opção na C$17lista suspensa.
ROW(A$1:A$12)dá uma matriz dos números sequenciais {1;2;3;...12}, e isso é dividido pela TRUE/FALSEmatriz.
Em operações aritméticas envolvendo valores lógicos, TRUEe FALSEsã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-numdo 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()-16inicia 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.