Como os dados correspondentes ignoram linhas, não é possível usar uma fórmula simples de índice / correspondência para extrair os nomes (sem usar colunas auxiliares, isto é).
A solução mais simples requer o uso de uma fórmula de matriz:
Matrizentra(Ctrl+Desloca+Introduz)aseguintefórmulaemD2
ecopia-cola/fill-down/fill-direitaparaorestantedascolunasdatabelaD
eE
(nãoseesqueçaderemover{
e}
):
{=IFERROR(INDEX($A:$A,SMALL(IF($B$2:$B$7=D$1,ROW($B$2:$B$7),FALSE),ROW()-1)),"")}
A fórmula funciona construindo inicialmente uma matriz que contém o índice da linha se o gênero corresponder ou FALSE
caso contrário: IF($B$2:$B$7=D$1,ROW($B$2:$B$7),FALSE)
.
Em seguida, a função SMALL()
é usada para extrair o próximo índice menor correspondente à linha de dados da tabela List: SMALL({…},ROW()-1)
. A razão pela qual isso funciona é que a função SMALL()
ignora valores booleanos.
Observe que, se você inserir a fórmula em qualquer linha diferente da linha 2
, ou se após inserir as linhas da fórmula forem inseridas / excluídas acima da primeira linha de dados da tabela List, a parte ROW()-1
precisará ser ajustada o resultado é 1 para a primeira linha de dados.
Finalmente, esse índice é usado para extrair o nome apropriado: INDEX($A:$A,<next smallest index>)
.
O IFERROR()
está lá apenas para ocultar os erros #NUM!
que ocorrem quando a função SMALL()
fica sem índices válidos para retornar.
Uma versão mais robusta, mas mais complicada, da fórmula que se ajusta automaticamente ao número de linhas de dados na tabela Informações e não será interrompida se as linhas forem inseridas / excluídas acima da primeira linha de dados da tabela List. segue:
{=IFERROR(INDEX($A:$A,SMALL(IF($B$1:INDEX($B:$B,COUNTA($B:$B))=D$1,ROW($B$1:INDEX($B:$B,COUNTA($B:$B))),FALSE),ROW()-ROW($B$2)+1)),"")}