Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
fgenaro

[Resolvido] Dados repetidos em colunas em uma mesma linha

Recommended Posts

Bom dia amigos,

Gostaria de saber se existe solução para o impasse que tenho.

Estou com uma lista com 35mil linhas, onde na coluna A tenho o nome da pessoa, na coluna D o DDD e na coluna E o telefone do mesmo.

Acontece que algumas pessoas possuem 2 ou 3 telefones cadastrados e eu precisava colocar em uma mesma linha segundo a seguinte ideia:

Caso a pessoa só tenha 1 telefone cadastrado na planilha, nada ocorre. Caso tenha 2 telefones, este segundo DDD seria incluído na coluna F e o segundo telefone na coluna G. Caso tenha um 3º telefone, este terceiro DDD seria incluído na coluna H e o terceiro telefone na coluna I.

É possível?

Se sim, como procedo?

Anexa uma imagem com um pequeno exemplo de como vejo a lista e como deveria ficar.

post-1023856-13884964645425_thumb.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

a) considerei os nomes ordenados, ou de A para Z ou de Z para A

B) o resultado será colocado pelo código a partir de 'G1'

Instale o código abaixo em um módulo comum, assim:

1. copie o código daqui

2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA

3. no menu do editor >> Inserir >> Módulo

4. cole o código na janela em branco que vai se abrir

5. feito! 'Alt+Q' para retornar para a planilha e testar

para rodar o código:

6. tecle 'Alt+F8' >> selecione a macro 'TranspNumTelef' >> Executar, ou insira um botão na planilha e vincule-o à macro

Sub TranspNumTelef()
Dim LR As Long, k As Long, x As Long, y As Long
Dim s As String, v As Variant, m As Long, i As Long
LR = Cells(Rows.Count, 1).End(xlUp).Row
For k = 1 To LR
x = Application.CountIf(Range(Cells(k + 1, 1), _
Cells(LR, 1)), Cells(k, 1).Value)
If x > 0 Then
For y = 1 To x
s = s & "," & Cells(k + y, 4) & "," & Cells(k + y, 5).Value
Next y
v = Split(s, ",")
Cells(1 + m, 7).Value = Cells(k, 1).Value
Cells(1 + m, 8).Resize(, 2).Value = Cells(k, 4).Resize(, 2).Value

For i = LBound(v) + 1 To UBound(v)
Cells(1 + m, i + 9) = v(i)
Next i
k = k + x
s = ""
Else:
Cells(1 + m, 7).Value = Cells(k, 1).Value
Cells(1 + m, 8).Resize(, 2).Value = Cells(k, 4).Resize(, 2).Value
End If
m = m + 1
Next k
End Sub

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • a) considerei os nomes ordenados, ou de A para Z ou de Z para A

    B) o resultado será colocado pelo código a partir de 'G1'

    Instale o código abaixo em um módulo comum, assim:

    1. copie o código daqui

    2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA

    3. no menu do editor >> Inserir >> Módulo

    4. cole o código na janela em branco que vai se abrir

    5. feito! 'Alt+Q' para retornar para a planilha e testar

    para rodar o código:

    6. tecle 'Alt+F8' >> selecione a macro 'TranspNumTelef' >> Executar, ou insira um botão na planilha e vincule-o à macro

    Sub TranspNumTelef()
    Dim LR As Long, k As Long, x As Long, y As Long
    Dim s As String, v As Variant, m As Long, i As Long
    LR = Cells(Rows.Count, 1).End(xlUp).Row
    For k = 1 To LR
    x = Application.CountIf(Range(Cells(k + 1, 1), _
    Cells(LR, 1)), Cells(k, 1).Value)
    If x > 0 Then
    For y = 1 To x
    s = s & "," & Cells(k + y, 4) & "," & Cells(k + y, 5).Value
    Next y
    v = Split(s, ",")
    Cells(1 + m, 7).Value = Cells(k, 1).Value
    Cells(1 + m, 8).Resize(, 2).Value = Cells(k, 4).Resize(, 2).Value

    For i = LBound(v) + 1 To UBound(v)
    Cells(1 + m, i + 9) = v(i)
    Next i
    k = k + x
    s = ""
    Else:
    Cells(1 + m, 7).Value = Cells(k, 1).Value
    Cells(1 + m, 8).Resize(, 2).Value = Cells(k, 4).Resize(, 2).Value
    End If
    m = m + 1
    Next k
    End Sub

    Osvaldo...

    Funcionou perfeitamente a vossa macro.

    Muito obrigado pela ajuda!

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×