Vamos começar este tutorial com perguntas: há empresas de políticos na “lista suja” do trabalho escravo que já foram autuadas ou possuem áreas embargadas pelo IBAMA? Qual o tamanho destas áreas e quais foram os tipos de infração cometidas?
Até o final do tutorial, esperamos que você consiga nos contar a resposta. Para isso, você vai precisar fazer uma das operações mais comuns na hora de trabalhar com dados: cruzar tabelas.
De modo geral, independente da ferramenta utilizada, todo cruzamento de dados tabulares necessariamente começa com pelo menos duas bases de dados diferentes e um identificador único, utilizado em ambas.
É muito importante que a coluna com o campo que servirá de identificador (por exemplo, um CNPJ, um nome ou data) esteja bem padronizada e uniformizada. Sem isso, não há match entre as colunas que possuem este identificador.
Sem orientações específicas, o computador não consegue saber que “José Augusto” e “ jose augusto “ se referem à mesma entidade – repare na diferença entre minúsculas e maiúsculas, a falta do acento, além dos espaços extras no segundo nome. Do mesmo modo, a sequência “138.312-12” não é a mesma coisa que “13831212”.
Ou seja, antes de cruzar dados, talvez você tenha que padronizar os campos que servirão de identificadores únicos, removendo por exemplo pontuações. Neste tutorial, já fizemos isso para você, mas você pode dar uma olhada em nosso tutorial sobre Expressões Regulares, caso queira conhecer melhor este poderoso recurso para identificar e lidar com padrões em nossos dados.
Cruzando dados em editores de planilha
Na segunda parte do tutorial ‘Entrevistando dados’, já ensinamos como utilizar a função de procura vertical (PROCV/VLOOKUP) do Google Spreadsheet para cruzar informações de diferentes tabelas. Ela é uma solução simples e pode resolver o problema em muitos mais casos, mas agora vamos ver como conseguir resultados ainda mais completos.
Com a procura vertical, é possível buscar um identificador em uma tabela a ser consultada e, então, “puxar” para nossa tabela principal uma outra célula desta mesma linha. A procura vertical exige necessariamente que estes valores que desejamos retornar estejam à direita da coluna com o identificador em nossa segunda tabela.
Mas e se não for este o caso? E se quisermos também retornar o valor de todas colunas, ao invés de uma só, juntando as duas fontes de dados em uma só grande tabela, independente da ordem de cada coluna?
Antes de botar a mão na massa, vejamos como obter os dados que servirão para praticarmos e respondermos à pergunta inicial de nosso tutorial.
Obtendo os dadosPara facilitar, para fins didáticos, já importamos aqui todos os dados necessários para responder à nossa questão. Faça uma cópia desta planilha e siga o exercício abaixo. Para gerar esta planilha, baixamos inicialmente os dados do site do IBAMA, onde temos uma tabela com os embargos registrados, que detalham o CNPJ das empresas, a infração, a área do embargo, entre outras informações. Também pegamos o “Cadastro de empregadores que tenham submetido trabalhadores a condições análogas à de escravo”, a famosa “Lista Suja”. Ela é disponibilizada em formato PDF, mas no caso deste exercício já convertemos os dados abertos para um formato aberto – saiba mais sobre conversão de PDFs com nosso guia. Os dados do IBAMA estão na aba ‘ibama’ e a “Lista Suja” encontra-se na aba ‘trabalho’. Para facilitar, também adicionamos a coluna “_CPFCNPJ_limpo”. Com estes códigos já padronizados, estas colunas serão utilizadas para o cruzamento. |
Comando FILTER
É importante ressaltar que o cruzamento de dados pode ser feito de diferentes formas. Neste exemplo, vamos utilizar a fórmula FILTER no Google Sheets. O Excel também tem uma fórmula semelhante e existem ainda outras abordagens e ferramentas para esta mesma finalidade.
Então, o que precisamos fazer para responder à pergunta inicial? Na aba ‘ibama’, queremos adicionar após a última coluna as informações que serão puxadas da aba ‘trabalho’, caso o CPNJ indicado na aba ‘ibama’ seja encontrada na aba ‘trabalho’.
Ou seja, queremos todos os registros entre a coluna A e K da aba ‘trabalho` quando o número da coluna com os CNPJs das empresas da “Lista Suja” for igual ao número do CNPJ na respectiva coluna da aba `ibama`.
A fórmula FILTER precisa de apenas dois parâmetros obrigatórios: um intervalo a ser filtrado e uma condição.
=FILTER(intervalo a ser filtrado; condição)
No nosso caso, vamos usar o operador de “igual” para buscar a equivalência desejada entre os CNPJs, mas você poderia utilizar outras condições, em outros contextos. Ou seja, traduzindo nossa consulta desejada teríamos a fórmula abaixo:
=FILTER(trabalho!A:K;A2 = trabalho!A:A)
- trabalho!A:K: indica que na aba ‘trabalho’ queremos retornar os dados das colunas A até a coluna K;
- A2: a célula com o CNPJ a ser buscado;
- trabalho!A:A: a coluna onde o valor anterior deve ser buscado;
Agora que já sabemos o que precisa ser feito, vamos ao passo a passo:
1. Abra a planilha indicada, vá no menu Arquivo e selecione ‘Fazer uma cópia’. Altere o nome e a pasta do arquivo no seu Google Drive, se desejar.
2. Como nossa primeira linha é o cabeçalho, vamos inserir a fórmula acima na segunda linha após a última coluna da aba ‘ibama’, ou seja, na célula S2. Aguarde o tempo de processamento.
Atenção: “#N/A” significa que o CNPJ não foi encontrado na tabela: ou seja, esta empresa não está listada na base do IBAMA.
3. Agora, basta aplicar a fórmula às outras linhas, dando dois cliques no quadrado azul que aparece no canto inferior direito, ao selecionar a célula com a fórmula.
4. Depois disto, você deve filtrar ou excluir os valores com “#N/A” para deixar apenas os dados das empresas que foram encontradas em ambas as listas. Para isso, basta selecionar a coluna desejada (no nosso caso, a coluna S) e clicar no menu Dados > Criar um filtro.
Outra opção é usar o ícone a seguir.
5. Então, no menu que irá aparecer, desmarque a opção “#N/A” na seção de ‘Filtrar por valores’.
6. Copie o cabeçalho da aba ‘trabalho’ para as respectivas colunas recém-criadas.
Pronto, você cruzou tabelas diferentes no Google Sheets e, agora, já tem todas as informações necessárias para responder ao nosso desafio inicial 🙂
Que tal comentar abaixo com o link da tabela com a resposta, para mostrar sua descoberta? O resultado encontrado terá 21 linhas como resultado.
Top demais.
Excelente dica!
Parece que não tem dados favoráveis para cruzamento no exemplo online
Pode ser mais específico, Lucas? O que você não conseguiu fazer?