Notifications
Clear all

Identificar o setor correspondente ao endereço

10 Posts
2 Usuários
0 Reactions
1,718 Visualizações
(@tristao)
Posts: 35
Trusted Member
Topic starter
 

Boa noite!

Estou precisando da ajuda dos especialistas. Preciso identificar qual o setor (ALFA, BRAVO, CHARLIE, DELTA ou ECO) responsável pela entrega de produto em função do endereço do destinatário. Procurei na base de dados do Fórum, mas não encontrei nada semelhante.

Tenho uma tabela com os nomes das ruas e seus respectivos setores. Seria fácil usar o PROCV, mas acontece que algumas ruas abrangem mais de um setor (Ex. Rua dos Limoeiros do nº 1 ao 20 é atendida pelo setor ALFA, do 21 até o 50 pelo setor BRAVO).
Piora inda mais quando cada um dos lados da rua é atendido por um setor diferente. (Ex.: Rua dos Andradas , lado par pelo setor DELTA e lado ímpar pelo setor ECO).

Estou anexando a planilha com algumas tentativas que fiz. Se alguém puder ajudar eu ficaria imensamente grato.
Aba DESTINATARIOS: tabela com os endereços para entrega . Alguns não estão com todos os dados completos.
Aba SETORES: Tabela resumida, importada dos Correios com os endereços oficiais do Bairro, acrescidos os setores.
Aba FILTRO, onde realizei diversos testes tentando identificar o setor de cada endereço contido na aba DESTINATARIOS.

 
Postado : 07/12/2013 8:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Cara,

Pra fazer o que vc quer com uma única fórmula não matricial é necessário ordenar sua tabela conforme demonstro no anexo.

Se um endereço (CEP, pelo que pude entender) tem mais de uma equipe designada vc tem que continuar atribuindo o IMP e o PAR somente se isso for critério. É possível delimitar endereços somente pela numeração das casas (mais lógico) atribuindo QQ e delimitando suas faixas (sugiro sempre 1 como mínimo e 100000 como máximo).

Se sua tabela de busca estiver corretamente ordenada (agrupando impar/par/qq) dá pra matar via PROCV(). Senão, matriciais. Vc precisa saber como tratar o número tb.

Dê uma olhada e tente entender a lógica. Se vc codificar direitinho (imp/par/qq) e mantiver a ordenação não é difícil.

Me avise. Teste bastante (F9) porque não tive tempo e é complexo.

ABs,

 
Postado : 08/12/2013 12:54 am
(@tristao)
Posts: 35
Trusted Member
Topic starter
 

Não é bem isso que eu preciso. Quero que seja exibido o nome do setor ao lado do endereço do destinatário (ou a mensagem que o endereço está incompleto).
Penso que tem que ser por VBA.
Rodando um loop de PROCVs até encontrar o resultado adequado.... Só não sei fazer... :(

 
Postado : 08/12/2013 12:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

infelizmente eu não compreendi sua dúvida, tente explicar para que o pessoal da comunidade possa ajuda-lo.

Att

 
Postado : 08/12/2013 1:08 pm
(@tristao)
Posts: 35
Trusted Member
Topic starter
 

Vamos lá...

Objetivo: Localizar o setor do endereço do destinatário. O Bairro (Ilha do Governador, RJ) está dividido em 5 setores (ALFA, BRAVO, CHARLIE, DELTA e ECO).
Podem ocorrer 3 situações:
1) A rua está toda dentro de um setor (Essa é fácil, acho pelo PROCV)
2) A rua é longa e abrange 2 ou mais setores (Além do PROCV tenho que verificar o número da casa do destinatário para identificar o setor)
3) A rua faz a divisa de 2 setores e o lado com numeração par pertence a um setor e o ímpar a outro.
É claro que as situações 2 e 3 podem acontecer ao mesmo tempo.

Minha ideia de solução é a seguinte:
A partir da planilha FILTRO, conto quantas vezes o endereço do destinatário aparece na planilha SETORES Ex.: CONT.SE(SETORES!$D$2:$D$50;J3)
Se o resultado for ZERO, o endereço está errado ou não pertence ao Bairro. FIM!!!
Se o resultado for 1 (UM) toda a rua pertence ao mesmo setor e através do PROCV o setor é identificado. FIM!!!
Se o resultado for maior do que 1, faria o seguinte:
** Um Loop (FOR NEXT) de 1 até o número de resultados do CONT.SE
** Faço o PROCV
** Com o CORRESP identifico o número da linha do resultado do PROCV
** Compara se o número do endereço do destinatário está dentro do intervalo, estando o setor foi encontrado. FIM!!!
** Não estado, faz um novo PROCV com a linha de pesquisa iniciando após o valor do CORRESP
Isso rodaria em loop até achar o setor.
Só não sei fazer isso em VBA!!!

 
Postado : 08/12/2013 2:41 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

tristão

Vc está confundindo “loop” com o comportamento do PROCV(). Minha insistência na ordenação de tabela é porque o PROCV() trabalha analisando FAIXAS de VALORES PREVIAMENTE ORDENADOS, diferente do “loop” que vc está imaginando.

Vc quer a solução via matriciais?

Me avise.

Abs.

 
Postado : 09/12/2013 7:20 pm
(@tristao)
Posts: 35
Trusted Member
Topic starter
 

Sim, se o resultado for atingido na mesma linha.

 
Postado : 09/12/2013 8:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Como sua planilha tem muitas colunas e só o que vc precisa é de endereço+núm, assumi que as colunas em laranja são as 2 variáveis que vc analisa para depois buscar em SETORES.

Repare que não é necessário ordenar SETORES mas vc não pode deixar "buracos"* nas faixas senão dá erro.

Me avise.

Abs,

*seu exemplo ímpar de Estrada do Galeão tem que trocar 2669 por 2699
1477 2669 IMP
2701 3101 IMP

 
Postado : 09/12/2013 9:07 pm
(@tristao)
Posts: 35
Trusted Member
Topic starter
 

Ficou ótimo Mandrix!

Só preciso que me ajude com um ajuste fino....
Quando um rua está toda dentro de um mesmo setor, muitas vezes não é informado o nº do endereço.
Assim, quando o endereço for único (não se repete na tabela SETORES), não é preciso verificar a numeração.

É possível fazer esse ajuste?

 
Postado : 10/12/2013 9:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não há ajuste a ser feito. Já é assim...

Repare neste pedaço da fórmula: ...;SE(CONT.SE(SETORES!$D$2:$D$55;Y133)=1;PROCV(Y133;SETORES!$D$2:$H$55;5;0);...

Não faço menção à numeração o que significa que no caso de 1 ocorrência em SETORES ele só considera a Rua/Avenda,etc...

O que é mais curioso é que esta solução faz exatamente a mesma coisa que a que postei anteriormente, com a diferença relacionada à ordenação da tabela.

Fico contente que tenha funcionado.

Precisando de mais alguma coisa é só falar.

Maneiro teu post.

Abração.

 
Postado : 10/12/2013 9:34 am