Fórmula do Excel: Extraia várias correspondências em colunas separadas -

Resumo

Para extrair várias correspondências para células separadas, em colunas separadas, você pode usar uma fórmula de matriz baseada em INDEX e SMALL. No exemplo mostrado, a fórmula em F5 é:

(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))

Esta é uma fórmula de matriz e deve ser inserida com Control + Shift + Enter.

Depois de inserir a fórmula na primeira célula, arraste-a para baixo e para a frente para preencher as outras células.

Explicação

Nota: esta fórmula usa dois intervalos nomeados: "nomes" refere-se a C5: C11 e "grupos" refere-se a B5: B11. Esses nomes também são definidos na captura de tela acima.

A essência desta fórmula é a seguinte: estamos usando a função SMALL para gerar um número de linha correspondente a uma "enésima correspondência". Assim que tivermos o número da linha, simplesmente o passamos para a função de função INDEX, que retorna o valor daquela linha.

O truque é que SMALL está trabalhando com uma matriz que é construída dinamicamente por IF neste bit:

IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)

Este trecho testa o intervalo nomeado "grupos" para o valor em E5. Se encontrado, ele retorna um número de linha de uma matriz de números de linhas relativos criados com:

ROW(names)-MIN(ROW(names))+1

O resultado final é uma matriz que contém números onde há uma correspondência e FALSE onde não:

(1; FALSO; FALSO; FALSO; FALSO; 6; FALSO)

Esta matriz vai para SMALL. O valor k para PEQUENO (enésimo) vem de um intervalo em expansão:

COLUMNS($E$5:E5)

Quando copiado na tabela de resultados, o intervalo se expande, fazendo com que k (enésimo) aumente. A função SMALL retorna cada número de linha correspondente, que é fornecido à função INDEX como row_num, com o intervalo nomeado "nomes" como a matriz.

Tratamento de erros

Quando COLUMNS retorna um valor para k que não existe, SMALL gera um erro #NUM. Isso acontece após todas as partidas terem ocorrido. Para suprimir o erro, envolvemos a fórmula na função IFERROR para capturar os erros e retornar uma string vazia ("").

Artigos interessantes...