Notifications
Clear all

Copiar dados Sheets até a ultima linha com dados

5 Posts
2 Usuários
0 Reactions
827 Visualizações
(@jokerpot)
Posts: 132
Estimable Member
Topic starter
 

Pessoal, podem me dar uma ajuda?

Preciso de uma Macro que percorra e copie todos os dados de 2 Sheets em uma planilha e depois cole esses dados em outra sheets na mesma planilha.
No exemplo que mando em anexo tenho 3 sheest - Razao 1 - Razao 2 - Tab_Total.
Preciso que a Macro copie os dados da sheets Razao 1 ATÉ A ULTIMA LINHA QUE TENHA DADOS e cole na sheets Tab_Total, depois faça o mesmo procedimento de copiar ATÉ A ULTIMA LINHA QUE TENHA DADOS na sheets Razao 2 e COLE na sheets Tab_Total na sequencia dos dados anteriores, ou seja na PRIMEIRA LINHA VAZIA apos dos dados anteriores.

Abraços,

 
Postado : 04/08/2014 1:51 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

ve se ajuda:

Sub Copier_Coler_GT()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim UL(1 To 2) As Long
Set ws = Sheets("Tab_Total")
For Each Sheet In Worksheets
    With ws
        UL(1) = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    End With
    If Not Sheet.Name = ws.Name Then
        With Sheet
            UL(2) = .Cells(Rows.Count, "A").End(xlUp).Row
            .Range("A2:J" & UL(2)).Copy ws.Range("A" & UL(1))
        End With
    End If
Next
Application.ScreenUpdating = True
End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 04/08/2014 3:16 pm
(@jokerpot)
Posts: 132
Estimable Member
Topic starter
 

ve se ajuda:

Sub Copier_Coler_GT()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim UL(1 To 2) As Long
Set ws = Sheets("Tab_Total")
For Each Sheet In Worksheets
    With ws
        UL(1) = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    End With
    If Not Sheet.Name = ws.Name Then
        With Sheet
            UL(2) = .Cells(Rows.Count, "A").End(xlUp).Row
            .Range("A2:J" & UL(2)).Copy ws.Range("A" & UL(1))
        End With
    End If
Next
Application.ScreenUpdating = True
End Sub

Olá gtsalikis.
Obrigado pelo codigo, deu certo.
Agora, pode me ajudar com outra coisa?
Algumas linhas trazem apenas o totalizador, uma soma conforme o texto. Gostaria de saber se vc pode me fornecer um codigo que faça com que essas linhas com totalizador sejam excluidas deixando somente as demais.
Deixei um exemplo em anexo.
Abraços e obrigado.

 
Postado : 04/08/2014 4:32 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

use assim:

Sub Copier_Coler_GT()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim UL(1 To 2) As Long
Set ws = Sheets("Tab_Total")
For Each Sheet In Worksheets
    With ws
        UL(1) = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    End With
    If Not Sheet.Name = ws.Name Then
        With Sheet
            UL(2) = .Cells(Rows.Count, "A").End(xlUp).Row
            .Range("A2:J" & UL(2)).Copy ws.Range("A" & UL(1))
        End With
    End If
Next
ws.Activate
For UL(2) = 2 To UL(1)
    If Cells(UL(2), "A").Value2 = " - " Then Rows(UL(2)).Delete
Next
Application.ScreenUpdating = True
End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 04/08/2014 5:40 pm
(@jokerpot)
Posts: 132
Estimable Member
Topic starter
 

use assim:

Sub Copier_Coler_GT()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim UL(1 To 2) As Long
Set ws = Sheets("Tab_Total")
For Each Sheet In Worksheets
    With ws
        UL(1) = .Cells(Rows.Count, "A").End(xlUp).Row + 1
    End With
    If Not Sheet.Name = ws.Name Then
        With Sheet
            UL(2) = .Cells(Rows.Count, "A").End(xlUp).Row
            .Range("A2:J" & UL(2)).Copy ws.Range("A" & UL(1))
        End With
    End If
Next
ws.Activate
For UL(2) = 2 To UL(1)
    If Cells(UL(2), "A").Value2 = " - " Then Rows(UL(2)).Delete
Next
Application.ScreenUpdating = True
End Sub

FANTASTICO.
Muito obrigado pela ajuda.
Abraços

 
Postado : 04/08/2014 5:48 pm