Página 1 de 1

Juntas linhas usando loop

Enviado: 16 Dez 2021 às 09:55
por victor2
Olá senhores. Tudo bem?

Se possível, gostaria de uma ajuda. Tenho tentado criar uma macro com o objetivo de juntar algumas linhas e resumir os critérios em uma linha só. Por ex: tenho casos que um mesmo critério possui 3 variáveis diferentes para realizar a somatória e gostaria de abri-los em linhas para facilitar a tabela dinâmica.

Anexei um modelo de como deveria ficar. Não inseri a macro porque ficou um pouco ruim...e preferi ver se alguém teria uma solução melhor.

Desde já agradeço!

Re: Juntas linhas usando loop

Enviado: 16 Dez 2021 às 18:31
por osvaldomp
Olá, @victor2 .
#
victor2 escreveu: 16 Dez 2021 às 09:55 ... juntar algumas linhas e resumir os critérios em uma linha só.
O que exatamente você chama de "critérios" ?

Por ex: tenho casos que um mesmo critério possui 3 variáveis diferentes ...
O que exatamente você chama de "variáveis"?

... para realizar a somatória e gostaria de abri-los em linhas para facilitar a tabela dinâmica.
Informe em qual coluna/célula você quer a soma e informe também o que você quer somar.

Anexei um modelo de como deveria ficar.
Suponho que na Planilha1 é que você colocou o resultado desejado, é isso?
Se sim, explique como você obteve os dados que colocou em cada linha e em cada coluna.

Re: Juntas linhas usando loop

Enviado: 17 Dez 2021 às 10:23
por victor2
Olá, Osvaldo, tudo bem?

Obrigado por responder.

Eu inseri outro exemplo explicando melhor.

Atualmente eu utilizo a 'planilha1' para montar tabelas dinâmicas tipo a aba'atual', porém, minha intenção é realizar filtros na aba 'planilha' um para outra aba para que seja possível montar tabelas como na 'modelo' e assim facilitar a dinâmica que criei na aba 'ideia'

Algumas atividades possuem 3 tipos de produtos, divididos nas colunas O,R e U. e seus resultados nas colunas AA, AB e AC

O que eu fiz na aba 'modelo', foi listar ele. Se antes estava

AREA Atividade Produto_1 Produto _2 e produto _3 QTD_1 QTD_2 QTD_3
10 X y z w 2 3 4

eu transformei em:

Area atividade Produto QTD
10 x y 2
10 x z 3
10 x w 4

Ou seja, eu juntei as colunas em apenas uma para que meu filtro fique mais simples como na tabela dinâmica da aba 'ideia'. Se fosse possível, não repetir a 'area' como mostrado em cima, pois triplicamos o valor, mas caso não de certo, tudo bem...

Tem casos como esse com 3 produtos, casos com 2 e 1 e algumas vezes 4, no máximo.

Re: Juntas linhas usando loop

Enviado: 18 Dez 2021 às 11:00
por osvaldomp
Olá, @victor2 .

Experimente o código abaixo.
Antes de testar limpe a planilha Modelo a partir da linha 2, mantenha somente os cabeçalhos em A1:N1.
#
Código: Selecionar todos
Sub MudaDispoDados()
 Dim C As Range, k As Long, LR As Long, v As Long, x As Long, h As Long
  Application.ScreenUpdating = False
  For Each C In Sheets("Planilha1").Range("A2:A" & Sheets("Planilha1").Cells(Rows.Count, 1).End(3).Row)
   k = Application.CountA(C.Offset(, 15), C.Offset(, 18), C.Offset(, 21))
   With Sheets("Modelo")
    LR = .Cells(Rows.Count, 1).End(3).Row
    .Cells(LR + 1, 1).Resize(k, 7).Value = C.Resize(, 7).Value
    .Cells(LR + 1, 8).Resize(k).Value = C.Offset(, 11).Value
    .Cells(LR + 1, 9).Resize(k).Value = C.Offset(, 12).Value
    .Cells(LR + 1, 14).Resize(k).Value = C.Offset(, 35).Value
    For x = 14 To 20 Step 3
     If C.Offset(, x) <> "" Then
      .Cells(LR + 1 + v, 10).Resize(, 3).Value = C.Offset(, x).Resize(, 3).Value
      .Cells(LR + 1 + v, 13) = C.Offset(, 26 + h).Value
      v = v + 1
     End If
     h = h + 1
    Next x
   End With
   v = 0: h = 0
  Next C
End Sub

Re: Juntas linhas usando loop

Enviado: 20 Dez 2021 às 22:44
por victor2
Olá,@osvaldomp

O código deu muito certo, obrigado.

Surgiu apenas mais uma dúvida. eu tentei fazer um teste caso haja mais colunas, e o (C.Offset(, 15) chega no máximo a 18, caso a coluna seja mais longe do que isso, ele não pega. Sabe dizer porque? De qualquer forma, Obrigado!.

Re: Juntas linhas usando loop

Enviado: 21 Dez 2021 às 07:06
por osvaldomp
victor2 escreveu: 20 Dez 2021 às 22:44
... eu tentei fazer um teste caso haja mais colunas, ...
Sabe dizer porque?
Sei, sim. É porque a solução que passei serve para a planilha que você disponibilizou e você tentou aplicar em planilha com estrutura diferente. Macro não é colete salva-vidas, que se adapta a qualquer situação. ;)
Disponibilize o outro arquivo com a solução desejada.