Encontrei uma macro que quase resolve minha questão.
Ela copia de uma aba para outra da forma que preciso (somente as linhas em que determinada célula contenha dados).
Segue a macro para quem precisar
Sub CriarResumo()
Const c_sResumo As String = "Resumo"
Const c_sBD As String = "BD"
Const c_sCritério As String = "D"
Const c_lDados As Long = 2
Dim lResumo As Long
Dim lBD As Long
Dim wsResumo As Worksheet
Dim wsBD As Worksheet
With ThisWorkbook
'Atribui variável à Planilha:
Set wsBD = .Sheets(c_sBD)
Set wsResumo = .Sheets(c_sResumo)
End With
lResumo = c_lDados
For lBD = c_lDados To RowLast(wsBD.Columns(c_sCritério))
If wsBD.Cells(lBD, c_sCritério) <> "" Then
wsBD.Rows(lBD).Copy Destination:=wsResumo.Cells(lResumo, "A")
lResumo = lResumo + 1
End If
Next lBD
End Sub
Function RowLast(rng As Range) As Long
'Retorna o valor da última linha povoada do intervalo rng
With rng
On Error Resume Next
RowLast = .Find(What:="*" _
, After:=.Cells(1) _
, SearchDirection:=xlPrevious _
, SearchOrder:=xlByColumns _
, LookIn:=xlFormulas).Row
If RowLast = 0 Then RowLast = rng.Cells(1).Row
End With
End Function
Postado : 19/05/2015 7:08 am