COMO COMPARAR LISTAS NO EXCELL


15 | ABR | 2013

CHEGA DE VIRAR NOITES COMPARANDO NOMES, APRENDA A BATER DUAS LISTAS DIFERENTES DE EXCEL SEM DOR DE CABEÇA.

excel bater listasVocê recebeu uma lista de um cliente seu e começou a trabalhar nela. Depois de virar o final de semana mexendo nas informações, no primeiro horário da segunda-feira ele te envia uma nova lista dizendo "ops, esqueci de colocar alguns nomes, essa é a lista certa".

Você tem duas opções: jogar fora tudo o que você fez ou comparar as duas planilhas e copiar para a sua apenas as informações novas. A maioria das pessoas compara linha a linha, nome a nome até o final. Se for uma lista de 30 nomes, ok. Se forem 300 é um dia de trabalho, se forem 3000, o que você faz?

Como bater as listas

Vamos aprender aqui um código que olha um campo de uma lista e identifica se existe um campo idêntico em uma coluna de outra lista. No exemplo nós teremos duas tabelas com listas de nomes para comparar, porém nem sempre nomes são a melhor forma de comparar as listas. Para o Excel, Pedro Alvares Cabral é diferente de Pedro A. Cabral. Se houver campos como RG ou CPF você pode arrancar os pontos e espaços e fazer uma comparação melhor, sabendo que a grafia será idêntica.

A planilha que usaremos no exemplo pode ser baixada clicando aqui.

Na primeira aba temos a lista "Original" e na segunda a lista "Complemento" (que apesar do seu cliente chamar de complemento, é a na verdade a mesma lista com mais nomes).

Vamos para a lista "Complemento", selecione a célula D2 e digite a seguinte string:

=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

 Vamos entender esses comandos:

PROCV: O comando procv (procura vertical) exige quatro itens:
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

- O primeiro é o campo que você quer comparar. No caso estamos comparando o A2, ou seja, o item da coluna de nomes.
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

- O segundo são as células onde o excel vai procurar se existe um valor igual ao A2, no caso colocamos Original!$A$2:$A$14, ou seja, da aba "Original", entre as células A2 e A14. Os $ são colocados para quando você copiar e colar ele continuar procurando entre o 2 e 14.
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")


- O terceiro é completamente redundante. Você precisa colocar o número da coluna do valor que você quer retornar. No caso como comparamos a coluna Original!A, A=1 então o valor é 1. Se você tivesse comparando, por exemplo, as datas, aqui o valor seria 2 (B=2).
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

- O que o terceiro item tem de redundante o quarto tem de inútil, porém você precisa colocar esse zero aí. Se você colocar 1 ele muda a forma de varredura para uma que simplesmente não funciona.
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

ÉERROS: O que acontece... O ProcV retorna um valor apenas se a célula tiver uma correspondente na procura, se não tiver ele DÁ ERRO... (Caramba, Microsoft!). Então o que você faz? Verifica se dá erro ou não, se der erro o valor não está nas duas tabelas, se não der erro, o valor está.
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

SE: Se é o velho IF da informática que o office insistiu em traduzir. Na prática é: Se (der erro; exibe "" (nada) ; caso contrário exibe "duplicado" )
=SE(ÉERROS(PROCV(A2;Original!$A$2:$A$14;1;0));"";"DUPLICADO")

Excel Batendo Listas Depois de colocar essa fórmula no campo, simplesmente copie-a para as células abaixo até o final da lista. Eu coloquei a coluna em negrito e pintei de vermelho para dar destaque. O resultado ficará como nessa imagem ao lado, bem destacadas as linhas que estão nas duas listas.

Você pode também substituir a parte final do código para destacar apenas os campos novos, mudando o final do código de:

; "" ; "DUPLICADO" )

para

; "NOVO" ; "" )

Ou também pode, se quiser, manter os dois textos:

; "NOVO" ; "DUPLICADO" )

batendo listasNesse caso eu recomendo uma formatação condicional (não sabe fazer? clique aqui) pintando todos os campos onde estiver escrito "NOVO" de azul.

Outra coisa legal é que você pode ordenar a tabela inteira por esse campo variável que ele não vai perder o script.

 Se essa dica fizer você ganhar algumas horas de sono, descreva sua experiência nos comentários!

 


       




REDES SOCIAIS

FACEBOOK
TWITTER