Categorias
Dicas Excel

Encontrar a enésima ocorrência de um valor no Excel

Já fiz um post mostrando como encontrar a última ocorrência de um determinado valor no Excel, mas agora vou mostrar como é possível encontrar o número da linha da enéssima ocorrência de um determinado valor.

Dado que você tenha uma planilha, como a seguinte:

Se eu buscar pela terceira ocorrência de “Café”, quero que a função retorne o valor 8, que corresponde ao número da linha. Para isso, utilizaremos as funções SMALL e ROW (MENOR e LIN em português):

=SMALL(IF(E1=$A$2:$A$10; ROW($A$2:$A$10)-ROW($A$1)+1); E2)

Essa é uma função matricial, então para aplica-la utilize CONTROL+SHIFT+ENTER.

Resultado

Caso queira o valor associado ao invés do número da linha, utilize a função acima em conjunto com a função INDEX (ÍNDICE em português):

=INDEX($B$2:$B$10;SMALL(IF(E1=$A$2:$A$10;ROW($A$2:$A$10)-ROW($A$2)+1);E2))

Aplique com CONTROL+SHIFT+ENTER.

Resultado

Categorias
Dicas Excel

Encontrar a última ocorrência de um determinado valor no Excel

Dado que você tenha uma planilha com diversos valores repetidos, como encontrar a última ocorrência de um dado valor? Existem diversas formas de resolver isso, a mais simples é usando a função LOOKUP (ou PROC em português) do Excel.

Suponha que você tenha uma planilha com alguns dados, como itens de uma compra e o valor e queira encontrar o valor que pagou na última vez que comprou um determinado item:

planilha exemplo

Nesse exemplo, se eu procurar por “Caneta” a função deve retornar o valor “R$ 2,50”. A chamada da função fica assim:

=LOOKUP(2;1/(A2:A5=D2);B2:B5)

Resultado

Resultado

Explicação
No segundo parametro usamos 1/(A2:A5=D2) como vetor de procura, onde (A2:A5=D2) irá retornar um vetor com valores TRUE/FALSE para cada índice indicando se corresponde ou não ao valor procurado. Dividindo isso por 1, teremos um vetor com 1s ou erro #DIV/0!.

Ai que entra a mágica, o primeiro parâmetro da função é o valor buscado no vetor, como passamos o valor 2 e nosso vetor de procura não tem nenhum, a função retornará o último número (o último 1) do vetor que corresponde ao índice da linha que procuramos no vetor de resultado (B2:B5).