Pular para o conteúdo

PROCV da direita para esquerda

O PROCV é uma das funções mais famosas do Excel, mas não quer dizer que seja a melhor delas, aliás, não podemos dizer qual é a melhor função que existe no Excel pois cada uma delas foi desenvolvida para exercer determinadas tarefas.

Embora famosa e muito útil, a função PROCV possui alguns defeitos, e um deles, é que o conteúdo que se deseja retornar com a função tem que sempre estar à direita da referência inicial buscada, como dizemos, o PROCV só funciona da esquerda para a direita.

Embora verdade, existem maneiras de contornar isso, e fazer com que a função PROCV busque dados da direita para esquerda, e é o que veremos aqui.

É possível fazer PROCV da direita para a esquerda?

Sim, possível é, mas não é nada prático, já te digo logo de início. Existem outras funções do Excel que conseguem executar essa tarefa de maneira muito mais fácil e intuitiva para o usuário.

Mas, como o título do artigo diz que faremos um PROCV da direita para a esquerda, então nós faremos um PROCV da direita para a esquerda.

É claro, depois de mostrar o caminho mais difícil, e que é bastante válido para entender alguns mecanismos do Excel e a importância de diferentes funções da ferramenta, irei também mostrar duas outras formas de chegar no mesmo resultado, só que de maneira mais simples, uma com a combinação das funções ÍNDICE + CORRESP e outra usando somente a função PROCX, esta última disponível somente no pacote Office 365.

Com preguiça de ler? Assista ao vídeo!

PROCV da direita para a esquerda

Para ajudar na didática, vamos imaginar que temos a tabela abaixo em nosso Excel, e que queremos buscas as informações contidas nelas utilizando PROCV, mas o nosso critério de busca, nosso valor_procurado, são os nomes de cada funcionário, que inconvenientemente estão na coluna mais à direita da nossa tabela.

Invertendo a ordem das colunas

Como dito na introdução, o PROCV não consegue ler da direita para esquerda, então precisamos manipular os dados para fazer com que isso funcione. Mas calma, não iremos manualmente alterar a ordem das colunas, embora isso também funcione, muitas vezes não é praticável, e como este artigo trata de fazer PROCV da direita para esquerda, significa que mudar a ordem das colunas manualmente não é uma opção.

Para executar a tarefa de alterar a ordem das colunas, nós utilizaremos a função ESCOLHER, então vamos entender como ela funciona e como ela consegue mudar colunas de lugar.

Como usar a função ESCOLHER no Excel

A função ESCOLHER possui os seguintes argumentos:

=ESCOLHER(núm_índice;valor1;valor2;valor3;…)

Onde:

núm_índice = Indica qual dos valores preenchidos nos outros argumentos da função (valor1, valor2, etc) deverá ser utilizado. É, portanto, um número que deve estar entre 1 e 254 ou uma referência a um número neste intervalo.

Valor1 = Válido para todos os demais argumentos da função, é o que a função retornará com base no núm_índice informado. Podendo ser basicamente qualquer coisa no Excel, como fórmulas, números, texto e nomes.

Veja este exemplo de como a função ESCOLHER funciona. Caso inserirmos em uma célula qualquer a função: =ESCOLHER(3;“A”;“B”;“C”)

Onde

Núm_indice = 3

Valor1 = “A”

Valor2 = “B”

Valor3 = “C”

O resultado desta fórmula será C, pois o argumento núm_índice está buscando o argumento valor3, que é C.

Como usar a função ESCOLHER para mudar a ordem das colunas

Usando o que vimos acima, podemos fazer com que todas as 3 opções de resultados da função ESCOLHER sejam retornados ao mesmo tempo, basta que o argumento núm_índice seja uma matriz, da seguinte maneira.

=ESCOLHER({1\2\3};“A”;“B”;“C”)

Note o uso das chaves {} no argumento núm_índice, ele indica a formação de uma matriz de dados. Ao concluirmos essa fórmula, todos os 3 últimos argumentos serão retornados ao mesmo tempo em células diferentes. O resultado da função ESCOLHER será despejado em mais de uma célula, veja a imagem.

Note que embora a fórmula esteja na célula A1, o resultado é despejado no intervalo A1:C1, o que pode ser confirmado pelo quadro azul ao redor deste intervalo quando qualquer uma de suas células é selecionada.

Agora, vamos expandir este conceito para um conjunto de células. Ao invés dos nossos argumentos valor1, valor2, valor3 forem letras, usaremos referências a intervalos de células, e para isso, vamos utilizar como base a tabela abaixo.

E, para conseguir inverter a ordem das colunas, faremos com que, quando núm_índice = 1, valor1 será D1:D7. Quando núm_índice = 2, valor2 será C1:C7 e assim por diante. Nossa função ESCOLHER ficará assim:

=ESCOLHER({1\2\3\4};D1:D7;C1:C7;B1:B7;A1:A7)

Perceba que poderíamos alterar a ordem das colunas da maneira que bem quisermos, por exemplo, para que a coluna B seja a primeira e a coluna A seja a segunda, basta que o argumento valor1 seja B1:B7 e o argumento valor2 seja A1:A7. Veja como fica no Excel.

Agora ficou fácil, a coluna Nome se tornou a coluna mais a esquerda da nossa tabela, basta colocar um PROCV em cima disso tudo e sair usando normalmente, mas nem precisamos gastar célula à toa, podemos fazer todo o cálculo numa célula única, vamos apenas recapitular os argumentos da função PROCV e entender o que vai aonde.

=PROCV(valor_procurado;matriz_tabela;núm_índice_coluna;[procurar_intervalo])

Onde:

Valor_procurado = Será o nome do funcionário cuja informações queremos buscar, neste exemplo utilizaremos Mariana. Lembrando que também pode ser uma referência a uma célula que contém o nome Mariana.

Matriz_tabela = Originalmente seria o intervalor de dados onde buscaremos os dados, mas como já sabemos não ser possível na nossa tabela original, utilizaremos a própria função ESCOLHER que vimos logo acima, dentro deste argumento.

Núm_índice_coluna = Vamos supor que queremos retornar o ID do funcionário, o que está na última coluna da matriz retornada pela função ESCOLHER, sendo assim, a coluna de número 4.

[procurar_intervalo] = Como queremos uma referência exata, este argumento será FALSO.

Nosso PROCV vai ficar assim:

=PROCV(“Mariana”;ESCOLHER({1\2\3\4};D1:D7;C1:C7;B1:B7;A1:A7);4;FALSO)

Nossa fórmula em F1 retorna corretamente o ID 308 para Mariana.

Quais os problemas dessa abordagem?

Existem vários, primeiramente, é extremamente manual, imagine ter 50 colunas para serem reorganizadas, a função ESCOLHER ficaria enorme e impraticável.

Outro problema é que caso quisermos buscar os dados utilizando outra coluna, teremos que reorganizar a função ESCOLHER mais uma vez.

Mas, felizmente, existem maneiras de continuar utilizando essa combinação PROCV + ESCOLHER sem ter esses problemas. Ainda assim, como você verá, não é a maneira mais fácil de se fazer isso, mas funciona, e mais uma vez, vale o aprendizado.

Aprimorando a abordagem PROCV + ESCOLHER

Você deve concordar comigo que a função PROCV precisa somente de 2 colunas. A coluna onde está o valor procurado, e a coluna onde está o valor a ser retornado pela função. Toda e qualquer outra coluna entre estas duas, não servem para absolutamente nada dentro do PROCV.

Sendo assim, ao invés de utilizarmos uma matriz do tipo {1\2\3\4\5\6\…} dentro da função ESCOLHER, poderíamos usar sempre apenas {1\2} basta que a primeira coluna seja a coluna onde está o valor procurado e, a segunda coluna seja a coluna onde está o valor a ser retornado.

Embora seja possível de fazer isso sem o uso de uma tabela, este método é muito complicado, gera uma fórmula quilométrica, demorada de fazer, com uma série de outras limitações e muito difícil de explicar em texto. Caso tenha curiosidade em saber como funciona, tudo é explicado no vídeo mais para o início do artigo. Aqui, mostrarei basicamente a mesma solução, com o uso de uma tabela.

Agora que temos nossa tabela criada, podemos começar a brincadeira. Para simplificar o entendimento, vou organizar algumas células ao lado da nossa tabela para facilitar nossa busca.

G2 = Nome da coluna onde está o valor procurado

G3 = Nome da coluna onde está o que desejamos como retorno da função PROCV

G4 = Argumento valor_procurado do PROCV

G5 = Função PROCV

Agora, precisamos da ajuda de mais uma função, a função INDIRETO.

Como usar a função INDIRETO

Possuímos um artigo dedicado a esta função aqui no site e também um vídeo lá no Youtube, mas de maneira simplificada, ela permite que façamos uma referência a algo, por exemplo, uma célula, sem nos referenciarmos a ela diretamente. Por exemplo, digamos que o conteúdo da célula B3 seja A1. Ao fazermos =INDIRETO(B3) o resultado que iremos obter é o valor contido na célula A1.

Isso também vale para textos e combinações com fórmulas, por exemplo:

=INDIRETO(“A”&CONT.VALORES(B1:B10))

Caso apenas 5 células dentro do intervalo B1:B10 estejam preenchidas, o resultado dessa fórmula será o valor contido na célula A5.

Fazendo uma referência indireta a coluna de uma tabela

Nós já sabemos o nome das colunas da tabela que precisamos para o nosso PROCV, só precisamos saber como buscar os dados contidos nelas, e é aqui que estra a função INDIRETO.

Quando fazemos uma referência direta (referência normal) a uma coluna inteira de uma tabela, o Excel automaticamente modifica nossa fórmula, saindo de referência a células no estilo D2:D7 para uma referência mais específica, utilizando o nome da tabela e da coluna selecionada, conforme mostra a imagem.

O que precisamos fazer é modificar essa referência de forma com que ela busque o conteúdo da célula G2, e em outra fórmula, G3, para que conforme mudemos as colunas desejadas, a fórmula se ajuste automaticamente buscando os dados corretamente.

Nossa primeira função INDIRETO ficará assim:

=INDIRETO(“Tabela1[“&G2&”]”)

Veja que ao colocar trechos do nome entre aspas duplas, os transformamos em texto, e com o uso do e comercial & conseguimos concatenar o texto com uma referência a célula G2. Veja como fica o resultado despejado da nossa função INDIRETO.

Exatamente o mesmo é feito para a célula G3, ficamos então com 2 funções INDIRETO, uma olhando pra célula G2 e outra pra célula G3.

Função ESCOLHER + INDIRETO

Agora que temos as referências corretas para a coluna do valor procurado e a coluna do dado a ser retornado, ficou fácil novamente, basta colocar um como sendo o argumento valor1, e o outro como sendo o argumento valor2 da função ESCOLHER, fica assim:

=ESCOLHER(núm_índice;valor1;valor2)

Onde:

Núm_índice = {1\2}

Valor1 = INDIRETO(“Tabela1[“&G2&”]”)

Valor2 = INDIRETO(“Tabela1[“&G3&”]”)

Assim temos:

=ESCOLHER({1\2};INDIRETO(“Tabela1[“&G2&”]”);INDIRETO(“Tabela1[“&G3&”]”))

Juntando PROCV + ESCOLHER + INDIRETO

Como já vimos antes, basta colocar a função ESCOLHER como argumento da função PROCV para obter o resultado final. Nossa função completa fica assim:

=PROCV(G4;ESCOLHER({1\2};INDIRETO(“Tabela1[“&G2&”]”);INDIRETO(“Tabela1[“&G3&”]”));2;FALSO)

Dessa forma nós resolvemos todos os problemas apresentados anteriormente sem o uso de uma tabela e sem o uso da função INDIRETO. Mas ainda assim, esta não é minha maneira favorita de resolver esta questão.

ÍNCIDE + CORRESP

Esta combinação já foi apresentada em outros posts aqui no site e também em vídeos no Youtube, mas não custa relembrar.

Para aqueles que não possuem a versão de assinatura do pacote Office, o Office 365, eu acredito que esta solução seja a mais indicada. Mas temos que levar algo em consideração primeiro. Não é sempre que precisamos ficar alterando as colunas de onde queremos buscar os dados, muito menos a coluna que queremos como resposta.

Na maioria das vezes, fazemos uma fórmula para nos retornar algo específico e não temos a necessidade de ficar mudando isso toda hora, como mostrado nos exemplos anteriores.

Sendo assim, o primeiro exemplo que darei sobre ÍNDICE + CORRESP não levará em conta referências a células com o nome das colunas desejadas, será apenas uma referência direta as colunas desejadas, e caso as colunas desejadas venham a mudar, uma alteração manual deverá ser feita da fórmula, mas nada complexo como em PROCV + ESCOLHER.

Partindo do uso da mesma tabela anterior, digamos que queremos buscar o ID com base no nome que está presente na célula G2.

Nossa função ficaria assim:

=ÍNDICE(Tabela1[ID];CORRESP(G2;Tabela1[Nome];0))

ÍNDICE + CORRESP + INDIRETO

No exemplo anterior não temos a possibilidade de alterar as colunas buscadas utilizando somente uma célula com o nome da coluna, essa alteração precisa ser feita manualmente dentro da fórmula.

Para usarmos uma célula auxiliar para isso utilizaremos a mesma ideia usada em PROCV + ESCOLHER + INDIRETO. Ou seja, incluiremos a função INDIRETO na nossa fórmula.

Tendo o nome da coluna desejada na célula G2, por exemplo, ao invés de fazermos a referência a coluna da tabela usando Tabela1[Nome], faremos com a função INDIRETO da seguinte forma:

=INDIRETO(“Tabela1[“&G2&”]”)

Nossa fórmula completa com ÍNDICE + INDIRETO fica assim:

=ÍNDICE(INDIRETO(“Tabela1[“&G3&”]”);CORRESP(G4;INDIRETO(“Tabela1[“&G2&”]”);0))

Note que possuímos duas funções INDIRETO, uma para auxiliar a função CORRESP e outra para indicar a matriz da função ÍNDICE.

Agora podemos alterar os valores nas células G2, G3 e G4 para que nossa fórmula se ajuste automaticamente e busque sempre os dados que desejarmos da nossa tabela.

Como usar a função PROCX

A função PROCX está disponível somente para os assinantes do pacote Office 365, mas eu acredito que seja a melhor de todas as soluções apresentadas aqui. A PROCX é uma junção de PROCV, ÍNDICE + CORRESP, SEERRO e mais algumas funcionalidades que não existem em nenhuma outra função tradicional do Excel.

Novamente partiremos com nossos dados já formatados como tabela, pois já vimos lá nos primeiros exemplos que esta é a melhor forma de trabalhar com dados no Excel.

Assim como explicado em ÍNDICE + CORRESP, acima, no dia a dia não costumamos ter que alterar as colunas que utilizamos em nossas fórmulas, apenas fazemos a fórmula uma vez e pronto. Sendo assim, o primeiro exemplo do PROCX será com isso em mente, não pretendendo mudar as colunas buscadas.

Eis a estrutura do PROCX.

=PROCX(pesquisa_valor; pesquisa_matriz; matriz retorno; [se_não_encontrada]; [modo_correspondência]; [modo_pesquisa])

Os três últimos argumentos do PROCX são opcionais, e sabemos disso pois estão entre colchetes, mas vamos entender para que cada um deles serve.

Pesquisa_valor = Este o equivalente ao primeiro argumento da função PROCV, é o dado que estamos usando como referência para encontrar o valor desejado em uma coluna adjacente.

Pesquisa_matriz = É a matriz de dados, coluna ou linha, em que o pesquisa_valor se encontra. Seria o equivalente a primeira coluna da área de busca do PROCV.

Matriz_retorno = É a matriz de dados, coluna ou linha, em que está o valor que se deseja obter como retorno da função. Deve ter o mesmo tamanho da pesquisa_matriz. É equivalente a coluna onde está o dado a ser retornado no PROCV.

[se_não_encontrada] = Funciona como um SEERRO, caso a pesquisa_valor não seja encontrado em pesquisa_matriz o PROCX retornará o que for inserido neste argumento.

[modo_correspondência] = São 4 opções, correspondência exata; correspondência de menor mais próximo; de maior mais próximo e; por caractere coringa. Similar ao último argumento do PROCV, mas com 2 opções extras.

[modo_pesquisa] = São 4 opções de como a pesquisa deve ser feita. De cima para baixo, igual ao PROCV normal; de baixo para cima; em ordem crescente e; em ordem decrescente.

Voltando a nossa tabela, nossa PROCX fica assim:

=PROCX(G2;Tabela1[Nome];Tabela1[ID];;0;2)

PROCX + INDIRETO

Nesse ponto você já deve ter manjado como isso vai funcionar. Caso queiramos usar referências a células com nomes das colunas desejadas de busca e de retorno, podemos combinar o PROCX com a função INDIRETO, da mesma forma como fizemos em todos os exemplos anteriores. Assim, nossa fórmula final fica:

=PROCX(G4;INDIRETO(“Tabela1[“&G2&”]”);INDIRETO(“Tabela1[“&G3&”]”);;0;2)

1 comentário em “PROCV da direita para esquerda”

  1. Pingback: PROCV da direita para esquerda — Função Excel – Desafio na química

Deixe um comentário ou uma dúvida