Notifications
Clear all

Preencher planilha faltando dados

5 Posts
2 Usuários
0 Reactions
1,183 Visualizações
(@de_nise_)
Posts: 0
New Member
Topic starter
 

Meu problema é o seguinte, tenho uma tabela com cerca de 1.000.000 de linhas com dados de chuva da minha cidade, o problema é q existe muitas linhas não preenchidas, e para conseguir trabalhar com os dados preciso preencher. As linhas contém a altura de chuva acumulada naquele dia, e os dados são "resetados" às 4:00 da manhã. Sendo assim, como exemplo na figura abaixo está faltando o dado de chuva das 16:41:00, que é igual ao valor da linha abaixo (21). Ou seja, preciso de um código que preencha com o valor da linha de baixo, visto que os dados de uma linha acima nunca podem ser menores que o da linha abaixo antes das 4:00 da manhã. Tentei aprender a fazer isso sozinha mas não entendo nada da linguagem do VB e não tenho muito tempo para aprender, mas já tive aulas de programação em C então preciso de um código para suprir o seguinte algoritmo:

>seleciona a linha D%% (onde %% é o número da linha)
>verifica se a linha está vazia
>se a linha for vazia, seleciona a linha D%%+1 e verifica se é vazia
>faz isso até achar uma linha com valor, então arrasta esse valor até D%%

Assim eu preencho os valores vazios com o da linha imediatamente superior quando faltarem dados, porém:

>quando são 3:59:00 como o valor zera às 4:00:00 nesse caso eu preciso q ele pegue o valor da primeira linha imediatamente superior que não esteja vazia.

Espero que meu problema não seja muito complicado, estou tentando ver outas formas de fazer com fórmulas e etc mas está "hard" pq são muitas linhas e tenho uns intervalos de umas milhares de linhas vazias em alguns pontos.

Desde já agradeço.

 
Postado : 31/01/2016 10:28 am
(@mprudencio)
Posts: 0
New Member
 

Se disponibilizar o arquivo (nem precisa ser completo) fica mais facil obter a resposta

 
Postado : 31/01/2016 11:01 am
(@mprudencio)
Posts: 0
New Member
 

Depois pensando um pouco mais cheguei a esse codigo.

Faça o teste

Sub Preeencher()

    Range("D3").Select
    Do While ActiveCell <> ""
    Range("D3").Select
    Selection.End(xlDown).Select
    If ActiveCell.Offset(1, -3).Value <> "" Then
    Selection.Copy
    ActiveCell.Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    Else
    Exit Sub
    End If
    Loop
    
End Sub




 
Postado : 31/01/2016 11:31 am
(@de_nise_)
Posts: 0
New Member
Topic starter
 

Tô tendo dificuldades em responder, mas enfim não deu muito certo, tentei disponibilizar o arquivo aqui pra exemplificar mas tbm n deu mt certo então upei no drive https://drive.google.com/file/d/0B9dEKP ... sp=sharing só q esse é o arquivo com menos linhas pq o original tem cerca de 1 milhão :D

 
Postado : 31/01/2016 11:48 am
(@de_nise_)
Posts: 0
New Member
Topic starter
 

Acho que deu certo, muito obrigada.

 
Postado : 31/01/2016 12:26 pm