Como você gera uma lista no excel com base em um determinado critério?

0

Eu estou tentando construir algo como um painel com alguns menus, que pesquisariam uma tabela e me forneceriam uma lista, com base no que eu selecionei. Por favor, veja a tabela abaixo:

Exemplo de tabela

Então, o que eu quero é, quando eu selecionar 'Não é necessário' em um menu suspenso, e 'Doc 2' em outro, ele deve me fornecer uma lista de todos os Sistemas que correspondem a esse critério.

Eu realmente aprecio qualquer ajuda sobre isso!

obrigado

Rav
fonte

Respostas:

1

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.

insira a descrição da imagem aqui

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.

Bandersnatch
fonte
Oh wow eu não esperava uma resposta tão abrangente e detalhada! Realmente aprecio este Bandersnatch! Eu tentarei isto hoje ou amanhã e eu o deixarei saber como eu entro. Obrigado novamente ambos para a solução e explicando como trabalha!
Rav
Desculpe ser um incômodo, mas você poderia, por favor, deixar-me ter a planilha que você criou?
Rav
Eu fiz o upload aqui . Deixe-me saber se isso não funcionar.
Bandersnatch
Não clique no botão "Abrir", que abre a pasta de trabalho no Excel Online. Ao lado do botão "Abrir" estão três pontos (...) e sob esse menu está "Download". Eles não deveriam ser tão reservados sobre isso. :-)
Bandersnatch