Olá, Jonas.
Abaixo o código comentado.
Cada comentário se refere à linha do código imediatamente acima dele.
Sugestão - cole o código em um módulo, a fonte dos comentários ficará na cor verde o que facilita a leitura. Retorne se restaram dúvidas.
Sub Replicadados()
Dim wso As Worksheet, wsd As Worksheet, x As Long
Dim rgAs As Range, LR As Long, TI As String, k As Long, c As Variant, CL As Variant
Set wsd = Workbooks("Controle Geral").Sheets("Controle Geral")
'wsd >> planilha "Controle Geral" do arquivo "Controle Geral"
For Each wso In ThisWorkbook.Sheets(Array("inicial", "complementar"))
'wso >> na primeira passada do Loop será a planilha "inicial" e na segunda, "complementar"
With wsd
LR = .Cells(Rows.Count, 2).End(3).Row
'LR >> última linha com conteúdo na coluna 'B' da planilha wsd
Set rgAs = wso.[E7:M7].Find("x", lookat:=xlWhole, after:=[E7], searchorder:=xlByRows)
'rgAs >> célula com conteúdo igual a "x" no intervalo referido da planilha wso
If Not rgAs Is Nothing Then TI = rgAs.Offset(, 1).Address Else TI = wso.[E7].Address
'TI >> endereço da célula á direita da célula que contiver o "x", caso exista no intervalo, ou
'TI >> endereço de 'E7', célula vazia, arbitrário, para não deixar TI sem valor
x = Application.CountA(wso.[C24:C33])
'x >> conta o número de serviços listados no intervalo
CL = Array("C16", TI, "C10", "M10", "C18", "C20", "C22", "K22", "K16")
'CL >> matriz contendo as células a serem copiadas
.Cells(LR + 1, 2).Resize(x).Value = Application.Proper(wso.Name)
'cola o nome da planilha wso
For Each c In CL
'c >> cada célula da matrix CL
.Cells(LR + 1, k + 3).Resize(x).Value = wso.Range(c).Value
'cola cada c na planilha wsd
k = k + 1
'k >> contador de colunas
Next c
.Cells(LR + 1, 12).Resize(x).Value = wso.[C24].Resize(x).Value
'cola a lista de serviços
If wso.Name = "complementar" Then
Union(.Cells(LR + 1, 18).Resize(x), .Cells(LR + 1, 22).Resize(x), .Cells(LR + 1, 23).Resize(x)) = "NA"
'se wso for a planilha "complementar" insere "NA" nas células
End If
End With
k = 0
Next wso
End Sub
Postado : 29/07/2016 4:00 pm