Para fazer um anti-join no Power Query e encontrar o que não está na outra tabela, vá em Página Inicial > Mesclar Consultas, selecione as duas tabelas e a coluna-chave em comum, e no campo Tipo de Junção escolha Anti Externa Esquerda (Left Anti) para manter apenas as linhas da primeira tabela que não têm correspondência na segunda.
Você já precisou descobrir quais clientes cadastrados nunca fizeram um pedido, quais produtos do estoque nunca foram vendidos, ou quais itens de uma lista de conferência não apareceram na planilha de chegada — ou seja, precisou achar exatamente o que não está na outra tabela, em vez do que está?
Sem uma forma direta de fazer essa comparação, a saída manual é abrir as duas listas lado a lado e ir conferindo item por item visualmente, ou montar uma fórmula complicada de PROCX combinada com SEERRO só para descobrir quem ficou de fora — um processo lento e que erra fácil quando as listas têm centenas ou milhares de linhas.
Neste artigo iremos mostrar como usar o Power Query para fazer esse tipo de comparação — chamada de anti-join — com um exemplo prático de clientes sem pedido, e a diferença entre as duas variações desse recurso.
O que é um anti-join
Um anti-join é o oposto de um cruzamento normal entre tabelas: em vez de trazer os registros que têm correspondência nas duas tabelas, ele traz só os registros que não têm nenhuma correspondência. No Power Query, esse tipo de comparação é feito através do recurso Mesclar Consultas, escolhendo um tipo de junção específico para esse fim.
Abrindo a Mesclagem de Consultas
Com as duas tabelas já carregadas como consultas separadas no Power Query, abra a primeira consulta (a tabela onde você quer identificar quem ficou sem correspondência) e vá em Página Inicial > Mesclar Consultas > Mesclar Consultas. Na janela que abre, selecione a segunda tabela na lista suspensa, e clique na(s) coluna(s) que servem de chave de comparação em cada uma das duas tabelas (por exemplo, a coluna “ID do Cliente” nas duas).
Escolhendo o Tipo de Junção certo
Ainda na mesma janela, no campo Tipo de Junção, existe uma lista suspensa com as opções de cruzamento disponíveis. Para manter só as linhas da primeira tabela que não têm correspondência na segunda, escolha a opção equivalente a Anti Externa Esquerda (identificada em inglês como Left Anti, “apenas linhas da primeira”). Se o que você precisa é o oposto — só as linhas da segunda tabela sem correspondência na primeira — a opção correspondente é a Anti Externa Direita (Right Anti, “apenas linhas da segunda”).
Exemplo prático: clientes sem pedido
Imagine uma tabela de Clientes cadastrados e outra de Pedidos já realizados, e você quer saber quais clientes nunca compraram nada.
| ID Cliente | Nome (tabela Clientes) |
|---|---|
| 101 | Ana Souza |
| 102 | Bruno Lima |
| 103 | Carla Dias |
| ID Cliente | Pedido |
|---|---|
| 101 | Pedido #5501 |
| 101 | Pedido #5522 |
Ao mesclar a tabela Clientes (primeira tabela) com a tabela Pedidos (segunda tabela), usando ID Cliente como chave e o tipo de junção Anti Externa Esquerda, o resultado traz só Bruno Lima (102) e Carla Dias (103) — os dois únicos clientes que não aparecem em nenhum pedido. Ana Souza (101) é excluída do resultado, porque ela tem correspondência na tabela de pedidos.
O que fazer com a coluna gerada pela mesclagem
Depois de clicar em OK, o Power Query adiciona uma nova coluna à tabela original, contendo uma referência às linhas correspondentes da segunda tabela — mas como se trata de um anti-join, essa coluna sempre virá vazia (afinal, por definição, nenhuma das linhas retornadas tem correspondência). Por isso, ao contrário de uma mesclagem comum (onde você expande essa coluna para trazer campos da segunda tabela), num anti-join basta remover essa coluna depois da mesclagem — clique com o botão direito nela e escolha Remover — já que ela não carrega nenhuma informação útil nesse caso.
Por que não usar só uma fórmula PROCX ou CONT.SE
Para listas pequenas, uma fórmula como =SEERRO(PROCX(A2;Pedidos!$A:$A;Pedidos!$A:$A);”Sem pedido”) ou uma contagem com CONT.SE resolve o mesmo problema. A vantagem do anti-join no Power Query aparece quando a lista é grande (milhares de linhas) ou quando você precisa repetir essa comparação com frequência, por exemplo, todo mês, com listas novas de clientes e pedidos — a consulta do Power Query só precisa ser atualizada, sem reescrever nenhuma fórmula, enquanto uma fórmula espalhada por milhares de linhas fica mais pesada e mais difícil de auditar.
Diferença entre Anti Externa Esquerda e Anti Externa Direita
A escolha entre as duas depende só de qual tabela você quer “vasculhar” em busca do que falta. Se a pergunta é “quais clientes não têm pedido”, a tabela de Clientes é a primeira (o que interessa) e a de Pedidos é a segunda — use Anti Externa Esquerda. Se a pergunta fosse invertida — “quais pedidos existem sem um cliente cadastrado correspondente” (um sinal de inconsistência de dados) —, a tabela de Pedidos entraria como primeira, e o mesmo resultado seria obtido com Anti Externa Esquerda também, já que o que importa é qual tabela ocupa a posição “primeira” na mesclagem, não qual delas contém fisicamente mais dados.
Disponibilidade
A opção de junção Anti Externa (Esquerda e Direita) está disponível no Power Query do Excel 2016 em diante, incluindo Excel 365, e no Power BI Desktop. No Excel para a Web, a Mesclagem de Consultas já está disponível para consultas mais simples. O Google Sheets não tem um recurso de Mesclagem de Consultas equivalente nativo.
Perguntas frequentes
Qual a diferença entre Anti Externa Esquerda e uma Mesclagem normal (Externa Esquerda)?
A Externa Esquerda comum mantém todas as linhas da primeira tabela, tenham ou não correspondência na segunda (preenchendo com nulo quando não há). A Anti Externa Esquerda faz o oposto: mantém só as linhas da primeira tabela que não têm nenhuma correspondência na segunda.
Preciso expandir a coluna gerada depois de um anti-join?
Não — como o anti-join só retorna linhas sem correspondência, a coluna gerada pela mesclagem sempre vem vazia. O mais prático é simplesmente remover essa coluna depois, já que ela não carrega nenhum dado útil da segunda tabela nesse caso.
Anti-join no Power Query funciona melhor que uma fórmula PROCX para esse tipo de comparação?
Para listas pequenas, uma fórmula resolve igualmente bem. A vantagem do anti-join aparece em bases grandes ou em comparações que se repetem com frequência, já que a consulta é só atualizada, sem reescrever fórmulas espalhadas pela planilha.
Veja também: De Para no Excel com Power Query e O Que É o Power Query no Excel e Como Começar a Usar.
Compartilhe ou Comente
Se você curtiu esse artigo aonde mostramos como usar o anti-join no Power Query para encontrar registros que estão em uma tabela mas não na outra, com um exemplo de clientes sem pedido, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.
Você já precisou conferir manualmente duas listas pra achar o que estava faltando em uma delas? Que tipo de comparação desse tipo você mais faria no seu trabalho — clientes sem pedido, estoque sem venda, ou outra coisa? Conta para nós nos comentários!