Logo Hardware.com.br
willian-rocha
willian-roch... Zerinho Registrado
3 Mensagens 1 Curtida

Ajuda com código VBA

#1 Por willian-roch... 09/09/2023 - 12:21
Olá!

Estou aprendendo VBA e estou com dificuldade para fazer um código, alguém poderia me ajudar?

Na minha planilha tem a sheet "Plan1", quero criar uma condição para separar as linhas por meio de um código VBA, toda vez que o que estiver na coluna J for diferente da linha anterior, quero que crie um espaçamento de uma linha em branco, considerando que a primeira linha é o cabeçaho e quero que permaneça para todas as divisões.

Como a planilha está:

        
Anexo do post


Como eu quero que fique:     

   Anexo do post

Anexos

Responder
GuimeM
GuimeM Super Participante Registrado
135 Mensagens 99 Curtidas
#2 Por GuimeM
09/09/2023 - 19:52
Se o código abaixo não retornar o resultado desejado, anexe o seu arquivo Excel em lugar de imagens.
Coloque na planilha dados que representem a planilha original e coloque o resultado desejado.

Sub InsereLinhas()
Dim k As Long, x As Long
  Application.ScreenUpdating = False
  For k = Cells(Rows.Count, 10).End(3).Row To 3 Step -1
  If Cells(k, 10) = Cells(k - 1, 10) Then
    x = Application.CountIf(Columns(10), Cells(k, 10))
    Rows(k + 1).Resize(2).Insert
    Range("A1:J1&quot.Copy Cells(k + 2, 1)
    Rows(k - x + 1).Resize(2).Insert
    Range("A1:J1&quot.Copy Cells(k - x + 2, 1)
    k = k - x + 1
  End If
  Next k
End Sub
willian-rocha
willian-roch... Zerinho Registrado
3 Mensagens 1 Curtida
#3 Por willian-roch...
10/09/2023 - 14:22
O código funcionou para o exemplo que dei, mas se tiverem mais linhas na planilha ele não faz corretamente, vou anexar uma planilha de exemplo, se puder me ajudar, agradeço muito!

Obs: O espaçamento de uma linha foi apenas um exemplo também, o que eu preciso na verdade é de 4 linhas em branco de espaçamento entre as divisões

Anexos

willian-rocha
willian-roch... Zerinho Registrado
3 Mensagens 1 Curtida
#5 Por willian-roch...
10/09/2023 - 16:13
GuimeM disse:
GuimeM disse:
Coloque na planilha dados que representem a planilha original e coloque o resultado desejado.

Não encontrei no seu arquivo o resultado desejado!

Informe também se é viável ordenar os dados com base na coluna J.


Anexei a planilha, na aba "Recarga" está a tabela que precisa ser modificada com o código para que fique como o exemplo que coloquei na aba "Como eu quero".

Em relação a coluna J, a tabela já estará em ordem do maior para o menor, mas se precisar modificar, fique à vontade.

Anexos

GuimeM
GuimeM Super Participante Registrado
135 Mensagens 99 Curtidas
#6 Por GuimeM
10/09/2023 - 21:10
willian-rocha disse:
... mas se tiverem mais linhas na planilha ele não faz corretamente, ...
O resultado diferente que o código apresentou não se deve à quantidade de linhas com dados e sim à disposição dos dados na coluna J.

O espaçamento de uma linha foi apenas um exemplo também, o que eu preciso na verdade é de 4 linhas em branco de espaçamento entre as divisões
Não entendi a razão de antes você pedir uma linha se queria quatro.  nao_sei.gif


willian-rocha disse:
Em relação a coluna J, a tabela já estará em ordem do maior para o menor, mas se precisar modificar, fique à vontade.
Diferentemente da sua informação acima, no arquivo que você anexou a tabela não está ordenada pela coluna J, então o resultado desejado que você colocou fica sem validade.
Experimente o código abaixo. Os dados serão ordenados pelo código, independente de como estiverem. Se você quiser alterar a ordem, basta substituir Ascending por Descending


Sub InsereLinhasV2()
Dim k As Long, x As Long, LR As Long
  Application.ScreenUpdating = False
  LR = Cells(Rows.Count, 10).End(3).row
  Range("A2:J" & LR).Sort Key1:=Range("J1&quot, Order1:=xlAscending
  For k = Cells(Rows.Count, 10).End(3).row To 3 Step -1
  x = Application.CountIf(Columns(10), Cells(k, 10))
  If k - x + 1 = 2 Then Exit Sub
  Rows(k - x + 1).Resize(5).Insert
  Range("A1:J1&quot.Copy Cells(k - x + 5, 1)
  k = k - x + 1
  Next k
End Sub
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal