Ir ao conteúdo

Posts recomendados

  • Solução
Postado
Sub DesmembrarLinhasDeCélulas()
 Dim r As Range, c As Range, i As Long, h
  If [H3] <> "" Then Range("H3:M" & Cells(Rows.Count, 8).End(3).Row).Value = ""
  For Each r In Range("A3:A" & Cells(Rows.Count, 1).End(3).Row)
   If Application.CountA(r.Offset(, 1).Resize(, 5)) > 0 Then
    For Each c In r.Offset(, 1).Resize(, 5)
     If c.Value <> "" Then
      i = Len(c.Value) - Len(Replace(c.Text, Chr(10), ""))
      If i > 0 Then
       h = Split(c.Value, Chr(10))
       If i + 1 > Application.CountIf([H:H], r.Value) Then
        Cells(Rows.Count, 8).End(3)(2).Resize(i + 1 - Application.CountIf([H:H], r.Value)).Value = r.Value
       End If
       Cells(Rows.Count, 8).End(3)(-i + 1, c.Column).Resize(i + 1).Value = Application.Transpose(h)
      Else: If Application.CountIf([H:H], r.Value) = 0 Then Cells(Rows.Count, 8).End(3)(2) = r.Value
       Cells(Rows.Count, 8).End(3)(-i + 1, c.Column) = c.Value
      End If
     End If
    Next c
   Else: Cells(Rows.Count, 8).End(3)(2) = r.Value
   End If
  Next r
End Sub

obs.
1. o resultado desejado que você colocou na planilha apresenta inconsistência dos dados no intervalo A14:E18
2. copie o intervalo A2:F2 e cole em H2, assim o código acima colocará o resultado a partir de H3
3. antes de testar o código acima limpe o intervalo A8:F21

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!