VBA Tips - Detectando a Localidade pela faixa de CEP


Inline image 1

Recentemente precisei contar um número de ocorrências dentro do Estado de São Paulo, determinando quais cidades eram do Interior/Litoral e quais eram da Grande São Paulo

Como determinar essas distinções? Tive um insight: "Talvez através do CEP".

Fui pesquisar no site dos Correios sobre como eram compostos os códigos de endereçamentos postais. Nele obtive as seguintes informações:

Código de endereçamento postal


1. HISTÓRICO
O Código de Endereçamento Postal (CEP), com estrutura de 5 (cinco) dígitos, foi criado pela Empresa Brasileira de Correios e Telégrafos, em Maio de 1971. Sua divulgação ao público em geral ocorreu com a publicação do Guia Postal Brasileiro, Edição 1971. Em Maio de 1992, sua estrutura foi alterada para 8 (oito) dígitos e oficializada junto ao público em geral, com a publicação do Guia Postal Brasileiro, Edição 1992.
2. DEFINIÇÃO
O Código de Endereçamento Postal é um conjunto numérico constituído de oito algarismos, cujo objetivo principal é orientar e acelerar o encaminhamento, o tratamento e a distribuição de objetos de correspondência, por meio da sua atribuição a localidades, logradouros, unidades dos Correios, serviços, órgãos públicos, empresas e edifícios.
3. FINALIDADE
A finalidade do CEP é racionalizar os métodos de separação da correspondência por meio da simplificação das fases dos processos de triagem, encaminhamento e distribuição, permitindo o tratamento mecanizado com a utilização de equipamentos eletrônicos de triagem.


4. ESTRUTURA
O CEP está estruturado segundo o sistema decimal, sendo composto de Região, Sub-região, Setor, Subsetor, Divisor de Subsetor e Identificadores de Distribuição, conforme demonstrado a seguir:
Inline image 2


O Brasil foi dividido em dez regiões postais para fins de codificação postal, utilizando como parâmetro o desenvolvimento sócio-econômico, bem como os fatores de crescimento demográfico de cada Unidade da Federação ou conjunto delas. A distribuição do CEP foi feita no sentido anti-horário a partir do estado de São Paulo, pelo primeiro algarismo.
Inline image 3


Com base no exemplo acima e nas ilustrações a seguir, apresentamos o significado de cada dígito do Código de Endereçamento Postal e sua localização geográfica no cenário da codificação nacional.
O primeiro algarismo representa a Região Postal 1 (Interior do Estado de São Paulo).
Inline image 4


Cada Região Postal foi dividida em 10 sub-regiões que são indicadas pelo segundo algarismo do CEP. No nosso exemplo, os dois primeiros algarismos estão representando a Sub-Região 13, cuja sede neste caso é a cidade de Campinas.
Inline image 5


Cada Sub-Região foi dividida em 10 Setores que são representados pelo terceiro algarismo.
No nosso exemplo, os três primeiros algarismos estão representando o Setor 131, cuja sede também é a cidade de Campinas.
Inline image 6


Cada Setor foi dividido em 10 sub-setores que são representados pelo quarto algarismo.
No nosso exemplo, os quatro primeiros algarismos estão representando o Sub-Setor 1316, cuja sede é a cidade de Artur Nogueira.
Inline image 7
Cada Sub-Setor foi dividido em 10 divisores que são representados pelo quinto algarismo.
No nosso exemplo, os cinco primeiros algarismos estão representando o Divisor 13165, cuja sede é a cidade de Engenheiro Coelho.
Inline image 8


Os três algarismos após o hífen são denominados de SUFIXO e destinam-se à identificação individual de Localidades, Logradouros, Códigos Especiais e Unidades do Correio, conforme o seguinte:
Localidades não codificadas por logradouros (possuem um único CEP):
- Faixa de Sufixos utilizada: 000 a 999
- Caixas Postais Comunitárias: 990 a 998
Localidades codificadas por logradouros:
- Logradouros:
 Faixa de Sufixos utilizada: 000 a 899
- Códigos Especiais:
 Faixa de Sufixos utilizada: 900 a 959

- CEPs Promocionais: Faixa de Sufixos utilizada: 960 a 969
- Unidades dos Correios: Faixa de Sufixos utilizada: 970 a 989 e 999.
- Caixas Postais Comunitárias: Faixa de Sufixos utilizada: 990 a 998
Assim que compreendi a composição detive-me em implementar um script simples que pudesse retornar um posicionamento da região:

Function DefineRegiaoCEP (nCEP As Variant) As String
    ' Função criada para detectar, através do CEP, as regiões do Estado de São Paulo.
    ' Author: André Luiz Bernardes - bernardess@gmail.com
    '   Date: 26|09|2012 - 18:25

    Dim nCD As Double
    
    If IsNull(nCEP) = False Then
        Let nCD = Val(Left(Trim(Replace(nCEP, "–", "")), 5))
    
        If nCD >= 1000 And nCD <= 9999 Then
            Let DefineRegiaoCEP = "Grande São Paulo"
        ElseIf nCD >= 11000 And nCD <= 19999 Then
            Let DefineRegiaoCEP = "Interior e litoral de São Paulo"
        End If
    Else
        Let DefineRegiaoCEP = "CEP Indeterminado"
    End If
End Function

Desenvolvi um SELECT para extrair os primeiros dados da minha tabela Table_Vendor:

SELECT ReturnCity([Cidade]) AS City, DefineRegiaoCEP([CEPs]) AS [Perfil CEP], table_Vendor.ESP1, table_Vendor.Estado 

INTO tbl_Analyse_Perfil

FROM table_Vendor

ORDER BY ReturnCity ([Cidade])

Em seguida efetuei a contagem na tabela criada a partir do SELECT anterior:

SELECT tbl_Analyse_Perfil.Estado, tbl_Analyse_Perfil.City AS Cidade, tbl_Analyse_Perfil.[Perfil CEP], tbl_Analyse_Perfil.Profile AS Especialidade, Count(tbl_Analyse_Perfil.Profile) AS Nº

FROM tbl_Analyse_Perfil

GROUP BY tbl_Analyse_Perfil.Estado, tbl_Analyse_Perfil.City, tbl_Analyse_Perfil.[Perfil CEP], tbl_Analyse_Perfil.Profile

HAVING (((tbl_Analyse_Perfil.City)<>"") AND ((tbl_Analyse_Perfil.[Perfil CEP])<>""))

ORDER BY tbl_Analyse_Perfil.City, tbl_Analyse_Perfil.[Perfil CEP], Count(tbl_Analyse_Perfil.Profile)

O resultado ao se exportar para o MS Excel numa Pivot Table foi:



Referência: Correios


Tags: VBA, Tips, Brasil, Brazil, CEP, Região, São Paulo, SP, Interior, Litoral, Grande São Paulo




Nenhum comentário:

Postar um comentário

diHITT - Notícias