Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#35561
Bom dia pessoal,

Tenho uma planilha com 993 linhas de endereço, rua, numero, bairro,cep,estado, preciso desmembrar essa informação em varias colunas para deixar os dados de forma estruturada, já tentei com texto para colunas, e com formulas, =esquerda, = direita,=ext.texto e não consegui o resultado esperado, por que cada linha tem uma quantidade de caracteres diferentes em cada linha e acho que com um código em VB iria resolver o problema.

AV MARACANA 987 BL 01 - 7 ANDAR TIJUCA 20511-000 RIO DE JANEIRO
R FARME DE AMOEDO 86 IPANEMA 22420-020 RIO DE JANEIRO
R ANA NERI 190 JARDIM 25 DE AGOSTO 25070-420 DUQUE DE CAXIAS
R CONSTANTE RAMOS 173 COPACABANA 22051-010 RIO DE JANEIRO
R CORONEL MOREIRA CESAR 117 CENTRO 24440-400 SÃO GONÇALO

Obrigado.
#35572
edualmeida06 escreveu:... para deixar os dados de forma estruturada,
O que você quer dizer com "forma estruturada" ?

Sugiro que você disponibilize uma amostra do seu arquivo Excel com algumas linhas com dados que representem todas as variações possíveis de ocorrer, sem repetição, e com o resultado desejado em cada caso.
#35582
Disse forma estruturada porque o endereço completo fica somente em uma unica linha e célula, mas a ideia é colocar as informações de endereço, numero, bairro, estado, etc, em células e colunas separadas.
Você não está autorizado a ver ou baixar esse anexo.
#35588
osvaldomp escreveu: Sugiro que você disponibilize uma amostra do seu arquivo Excel com algumas linhas com dados que representem todas as variações possíveis de ocorrer, sem repetição, e com o resultado desejado em cada caso.
#35682
Ative a planilha Exemplo e rode o código abaixo.

Código: Selecionar todos
Sub DesdobraEndereço()
 Dim i As Long, k As Long, m As Long, x As Long, c As Range
  Application.ScreenUpdating = False
  For Each c In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
   i = InStr(1, c.Value, "-")
   c.Offset(, 4).Value = Mid(c.Value, i - 5, 9)
   c.Offset(, 5).Value = Right(c.Value, Len(c.Value) - i - 4)
   c.Offset(, 1).Value = Evaluate("LOOKUP(LEFT(" & c.Address & ",FIND("" ""," & c.Address & ")),{""AL"";""EST"";""LARGO"";""PC"";""R"";""TRAV""},{""ALAMEDA"";""ESTRADA"";""LARGO"";""PRAÇA"";""RUA"";""TRAVESSA""})")
   For m = i - 6 To 1 Step -1
    If IsNumeric(Mid(c.Value, m, 1)) Then Exit For
   Next m
   c.Offset(, 3).Value = Trim(Mid(c.Value, m + 2, (i - 7) - (m + 1)))
   For m = 7 To Len(c.Value)
    If IsNumeric(Mid(c.Value, m, 1)) And Not IsNumeric(Mid(c.Value, m + 1, 1)) Then
     x = x + 1: Exit For
    ElseIf IsNumeric(Mid(c.Value, m, 1)) Then
     x = x + 1
    End If
   Next m
   c.Offset(, 2).Value = Mid(c.Value, m - x + 1, x)
   i = InStr(1, c.Value, " ")
   If InStr(1, c.Value, "S/N") > 0 Then
    c.Offset(, 1).Value = c.Offset(, 1).Value & " " & Mid(c.Value, i + 1, InStr(1, c.Value, "S/N") - 2 - i)
   Else: c.Offset(, 1).Value = c.Offset(, 1).Value & " " & Mid(c.Value, i + 1, (m - x - 1) - i)
   End If
   x = 0
  Next c
  Application.ScreenUpdating = True
End Sub
obs.
1. o resultado do código será diferente do seu para as linhas 4, 5 e 7
2. seria conveniente introduzir uma coluna COMPLEMENTO para receber informações adicionais sobre o endereço (sala, apto, andar, quadra, ...) e assim torná-lo completo, pois da forma que você fez o endereço está truncado
3. a última coluna é CIDADE e não ESTADO, como você colocou
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord