Ir ao conteúdo
  • Cadastre-se

Excel Macro de repetição para copia e cola e quebra de coluna


Ir à solução Resolvido por Visitante,

Posts recomendados

Olá Pessoal,

 

tenho esta estrutura porém A e B vão até 350, enquanto C vai até 15.000

image.png.0656e00607023c9f78c1e782eeea39be.png

 

a quantidade de A e B são iguais, mas a quantidade de C é variável

preciso transformar esta coluna em:

image.png.f1bed1d1594d21c0ac8fd25562589720.png

 

A e B estão sempre juntos, o C é a variável.

agora um detalhe bastante importante, essa quantidade daria 5.175.000 combinações/linhas, o Excel não suporta essa quantidade de linhas, então eu preciso quebrar em colunas, especificamente posso utilizar até 800.000 linhas; sendo assim ficaria assim:

image.png.0770cee65dddb7f691d9bbf806814c98.png

 

alguém tem alguma ideia de como montar uma macro para isto?

 

Link para o comentário
Compartilhar em outros sites

  • Solução
21 horas atrás, Rodrigo Sereno disse:

 ... essa quantidade daria 5.175.000 combinações/linhas,

Na calculadora xing ling aqui encontrei 350 x 15.000 = 5.200.000 linhas (repetições, não combinações)

 

alguém tem alguma ideia de como montar uma macro para isto?

Eu não tenho ideia, mas segue um palpite. 😋  Resultado em E:G, I:K, ...

 

Sub RepeteDados()
 Dim c As Long, k As Long, rgC As Variant, v As Long, x As Long
  Application.ScreenUpdating = False
  [E:AE] = ""
  rgC = Range("C1:C" & Cells(Rows.Count, 3).End(3).Row)
  c = Application.CountA([C:C]): v = 5
  For k = 1 To Cells(Rows.Count, 1).End(3).Row
   If x = Int(800000 / c) Then v = v + 4: x = 0
    Cells(Rows.Count, v).End(3)(2).Resize(c, 2) = Cells(k, 1).Resize(, 2).Value
    Cells(Rows.Count, v + 2).End(3)(2).Resize(c) = rgC: x = x + 1
  Next k
  Application.ScreenUpdating = True
End Sub

Com 350 x 15.000 linhas aqui o código processa em 60 seg.

Link para o comentário
Compartilhar em outros sites

9 horas atrás, osvaldomp disse:
9 horas atrás, osvaldomp disse:

 ... essa quantidade daria 5.175.000 combinações/linhas,

Na calculadora xing ling aqui encontrei 350 x 15.000 = 5.200.000 linhas (repetições, não combinações)

refiz a conta na calculadora do windows e deu 5.250.000 kkkkkkkkkkkkkkk

 


Sub RepeteDados()
 Dim c As Long, k As Long, rgC As Variant, v As Long, x As Long
  Application.ScreenUpdating = False
  [E:AE] = ""
  rgC = Range("C1:C" & Cells(Rows.Count, 3).End(3).Row)
  c = Application.CountA([C:C]): v = 5
  For k = 1 To Cells(Rows.Count, 1).End(3).Row
   If x = Int(800000 / c) Then v = v + 4: x = 0
    Cells(Rows.Count, v).End(3)(2).Resize(c, 2) = Cells(k, 1).Resize(, 2).Value
    Cells(Rows.Count, v + 2).End(3)(2).Resize(c) = rgC: x = x + 1
  Next k
  Application.ScreenUpdating = True
End Sub

Com 350 x 15.000 linhas aqui o código processa em 60 seg.

estou testando aqui, mas o excel está há 5 minutos travado... 

qualquer novidade eu posto aqui novamente.

uma dúvida... se eu tiver uma planilha que varie os 350 ou os 15000 eu precisarei reescrever algo ou essa vai atender também?

Link para o comentário
Compartilhar em outros sites

Confirmado, o valor correto é 5.250.000.

A calculadora xing ling fez certo, eu que digitei errado. ☺️

 

O código funciona com quaisquer quantidades de linhas. A propósito, sugiro que você inicialmente faça testes com poucas linhas para verificar se o conteúdo do resultado é o desejado.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!