Fórmula do Excel: pesquisa de correspondência exata com INDEX e MATCH -

Índice

Fórmula genérica

(=INDEX(data,MATCH(TRUE,EXACT(val,lookup_col),0),col_num))

Resumo

Pesquisa que diferencia maiúsculas de minúsculas

Por padrão, as pesquisas padrão com VLOOKUP ou INDEX + MATCH não diferenciam maiúsculas de minúsculas. Ambos VLOOKUP e MATCH irão simplesmente retornar a primeira correspondência, ignorando maiúsculas e minúsculas.

No entanto, se você precisar fazer uma pesquisa com distinção entre maiúsculas e minúsculas, pode fazê-lo com uma fórmula de matriz que usa INDEX, MATCH e a função EXACT.

No exemplo, estamos usando a seguinte fórmula

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

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

Explicação

Como o MATCH sozinho não faz distinção entre maiúsculas e minúsculas, precisamos de uma maneira de fazer o Excel comparar maiúsculas e minúsculas. A função EXACT é a função perfeita para isso, mas a forma como a usamos é um pouco incomum, porque precisamos comparar uma célula a um intervalo de células.

Trabalhando de dentro para fora, temos primeiro:

EXACT(F4,B3:B102)

onde F4 contém o valor de pesquisa e B3: B102 é uma referência à coluna de pesquisa (nomes). Como estamos fornecendo uma matriz EXACT como segundo argumento, obteremos de volta uma matriz de valores falsos VERDADEIROS como este:

(FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, etc.)

Este é o resultado da comparação do valor em B4 de cada célula na coluna de pesquisa. Sempre que vemos VERDADEIRO, sabemos que temos uma correspondência exata que respeita maiúsculas e minúsculas.

Agora precisamos obter a posição (ou seja, o número da linha) do valor VERDADEIRO neste array. Para isso, podemos usar MATCH, procurando TRUE e configurando no modo de correspondência exata:

MATCH(TRUE,EXACT(F4,B3:B102),0)

É importante notar que MATCH sempre retornará a primeira correspondência se houver duplicatas, portanto, se acontecer de haver outra correspondência exata na coluna, você corresponderá apenas à primeira.

Agora temos um número de linha. Em seguida, só precisamos usar INDEX para recuperar o valor na linha certa e na interseção da coluna. O número da coluna neste caso é codificado permanentemente como 3, uma vez que os dados do intervalo nomeado incluem todas as colunas. A fórmula final é:

(=INDEX(data,MATCH(TRUE,EXACT(F4,B3:B102),0),3))

Temos que inserir esta fórmula como uma fórmula de matriz por causa da matriz criada por EXACT.

Esta fórmula recuperará valores de texto e numéricos. Se você deseja recuperar apenas números, pode usar uma fórmula baseada em SUMPRODUCT; veja o link abaixo

Artigos interessantes...