Página 1 de 1

Formatação de Relatório

Enviado: 21 Nov 2018 às 12:07
por CarlosAlberto
Olá amigos, bom dia!

Estou precisando de ajuda no desenvolvimento de um VBA que mude o layout da planilha em que trabalho.

O relatório que é extraído do sistema retorna 3 colunas: Conta, descrição e valor.

Contudo, na coluna Conta tem o Nº que representa o setor e na Descrição tem descrito a qual setor está conta pertence.

No arquivo em anexo tem exatamente o que estou precisando fazer via VBA.

Como as informações do setor responsável pela despesa estão "misturado" na descrição da despesa, precisaria que o VBA criasse duas novas colunas, com o nome do setor responsável pela despesa e o código do mesmo.

Agradeço pelo apoio de todos!

Re: Formatação de Relatório

Enviado: 21 Nov 2018 às 16:44
por osvaldomp
Experimente o código abaixo.
Código: Selecionar todos
Sub OrganizaDados()
 Dim c As Range, rng As Range, fAdd As String, x As Long, y As Long, LR As Long
  Application.ScreenUpdating = False
  Sheets("RelatDesp").[A:E] = ""
  Set rng = Range("A1:A" & Cells(Rows.Count, 1).End(3).Row)
   Set c = rng.Find("1.*", Lookat:=xlWhole)
   If Not c Is Nothing Then
    fAdd = c.Address
    Do
     x = c.Row
     Set c = rng.FindNext(c)
     y = IIf(c.Address <> fAdd, c.Row, Cells(Rows.Count, 1).End(3).Row)
     With Sheets("RelatDesp")
      LR = .Cells(Rows.Count, 1).End(3).Row
      .Cells(LR + 1, 1).Resize(y - x - 1).Value = Cells(x, 1)
      .Cells(LR + 1, 2).Resize(y - x - 1).Value = Cells(x, 2)
      .Cells(LR + 1, 3).Resize(y - x - 1).Value = Cells(x + 1, 1).Resize(y - x - 1).Value
      .Cells(LR + 1, 4).Resize(y - x - 1).Value = Cells(x + 1, 2).Resize(y - x - 1).Value
      .Cells(LR + 1, 5).Resize(y - x - 1).Value = Cells(x + 1, 3).Resize(y - x - 1).Value
     End With
    Loop While Not c Is Nothing And c.Address <> fAdd
   End If
  On Error Resume Next
  Set c = rng.Find("1.*", Lookat:=xlPart)
  Application.ScreenUpdating = True
End Sub
obs.
1. nomeie uma planilha vazia como RelatDesp, que receberá os dados.
2. ao rodar o código a planilha que contém os dados deverá ser a planilha ativa.
3. no modelo que você disponibilizou o código gerou 1.142 registros na planilha RelatDesp em aprox. 1 seg.

Re: Formatação de Relatório

Enviado: 22 Nov 2018 às 07:32
por CarlosAlberto
Osvaldo, bom dia!

Exatamente o que precisava!!!

Muito obrigado!!!!

DEUS DO VBA :o :o :o :o :o

Poderia me passar o caminho de onde começar a estudar? tenho uma noção básica