Veja como utilizar uma célula para armazenar o valor do CEP e automaticamente buscar outras informações relativas a ele.
Olha só... 1.469 municípios brasileiros possuem somente um CEP (https://www.nexojornal.com.br/grafico/2024/06/14/municipio-brasileiro-cep-unico-grafico-dados-ibge)
O CEP pode começar com o número 0 (zero). Exemplo: 01001-000 (Praça da SÉ – SP)
Vamos utilizar algumas funções do Excel para nossa tarefa.
Função DIREITA
=DIREITA(célula-que contem-valor pretendido; número-de-caracteres-que devem ser extraídos)
Utilizazemos assim:
=DIREITA(“0”&célula; 8)
Onde célula é a referência da célula que contém o valor informado para o CEP. Esta função fará com que seja usado 8 caracteres da célula onde o CEP é preenchido e, caso inicie com “0” ele será inserido (porque o Excel não considera o “0” na frente de número)
Função SERVIÇOWEB
=SERVIÇOWEB(url)
O valor de url vai depender do serviço a ser usado. Como vamos usar o webservice da ViaCEP e desejaremos que o retorno seja no formato XML, nossa função será:
=SERVIÇOWEB("viacep.com.br/ws/" & VALOR-DO-CEP & "/xml/")
Como o valor do CEP está em uma célula e ele é tratado pela função DIREITA, nossa função será, então:
=SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"&célula;8) & "/xml/")
Exemplo de retorno dessa função ao utilizarmos o CEP da Praça da Sé:
URL: viacep.com.br/ws/01001000/xml/
<?xml version="1.0" encoding="UTF-8"?>
<xmlcep>
<cep>01001-000</cep>
<logradouro>Praça da Sé</logradouro>
<complemento>lado ímpar</complemento>
<unidade></unidade>
<bairro>Sé</bairro>
<localidade>São Paulo</localidade>
<uf>SP</uf>
<estado>São Paulo</estado>
<regiao>Sudeste</regiao>
<ibge>3550308</ibge>
<gia>1004</gia>
<ddd>11</ddd>
<siafi>7107</siafi>
</xmlcep>
Ao utilizarmos a função SERVIÇOWEB, teríamos um retorno semelhante a esse:
<?xml version="1.0" encoding="UTF-8"?><xmlcep><cep>01001-000</cep><logradouro>Praça da Sé</logradouro><complemento>lado ímpar</complemento><unidade></unidade><bairro>Sé</bairro><localidade>São Paulo</localidade><uf>SP</uf><estado>São Paulo</estado><regiao>Sudeste</regiao><ibge>3550308</ibge><gia>1004</gia><ddd>11</ddd><siafi>7107</siafi></xmlcep>
Nossa função pode se ajustar para colher a informação somente de um “campo”, se utilizarmos a função:
=FILTROXML(xml, xpath)
Onde:
xml - Uma cadeia de caracteres em formato XML válido
xpath - Uma cadeia de caracteres no formato XPath padrão
Com base nisso e juntando todas as informações que já comentamos em um único tratamento, teremos, para cada informação do CEP as seguintes funções:
Para o endereço:
=FILTROXML(SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"&célula;8) & "/xml/");"//logradouro")
Para o bairro:
=FILTROXML(SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"& célula;8) & "/xml/");"//bairro")
Para a cidade
=FILTROXML(SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"& célula;8) & "/xml/");"//localidade")
Para o Estado (abreviado):
=FILTROXML(SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"& célula;8) & "/xml/");"//uf")
Para o Estado (por extenso):
=FILTROXML(SERVIÇOWEB("viacep.com.br/ws/" & DIREITA("00"& célula;8) & "/xml/");"//estado")
SITES PRA DAR UMA OLHADA
ViaCEP: https://viacep.com.br/
Gerador de CEP: https://www.geradordecep.com.br/
