Notifications
Clear all

Copia de dados de outra planilha

2 Posts
1 Usuários
0 Reactions
921 Visualizações
(@odilojr)
Posts: 0
New Member
Topic starter
 

Tenho as duas planilhas anexas. A denominada "BD" é meu banco de dados e a "Analise é para efetuar analises dos dados.
Preciso copiar as informações referente as datas, tempo e valores da planilha "BD" para a "Analise".
Fiz uma macro mas ela copia todos os dados referentes (datas, tempo e valores), porém preciso copiar somente as linhas com dados que contenham valores.
Ou seja, na planilha "BD" estão anotados dados de hora em hora, mesmo que as colunas com valores (D até G) não tenham dados.
Na planilha "Analise" preciso que copie somente as linhas que contenham valores, e nas datas em que não há valores não deve ser copiada tal linha.

 
Postado : 18/05/2015 8:28 am
(@odilojr)
Posts: 0
New Member
Topic starter
 

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