Integrazione automatica serie di date
Hai un problema con Excel? 
Integrazione automatica serie di date
di Gianro data: 05/03/2015 15:10:49
Salve a tutti,
premetto che la mia conoscenza di VBA è pari a zero e vi sarei profondamente grato se poteste spiegarmi i vari passaggi e mi scuso preventivamente se porrò questioni per voi banali.
Passiamo al problema. Ultimamente sto lavorando su dataset contenenti migliaia di righe (talvolta anche centinaia di migliaia) nei quali è sempre presente una colonna delle date il cui intervallo temporale è di un anno e i cui dati presentano generalmente una cadenza oraria. Il problema sta nel fatto che spesso ci sono dei buchi e pertanto non c'è continuità temporale. Premetto che questa cosa la riesco ad ovviare manualmente tramite un test-confronto tra questa colonna di date ed una che mi ricavo io ed in cui sono certo che vi sia continuità. Trovate le lacune inserisco una riga vuota ed introduco la data mancante. Vi riporto un esempio:
h**p://s18.postimg.org/falukbdih/dataset.jpg
Come potete vedere nella colonna A alle 03.00 dell'01/01/2014 mancava il valore ed ho dovuto scovarlo tramite il suddetto test. Sarà una banalità ma farlo tante volte e per migliaia di dati pesa. Vi sarei grato se qualcuno di voi mi aiutasse a creare uno script che automatizzi ciò che quindi:
1) individui i punti in cui non vi è una continuità temporale;
2)vi introduca una riga e la rispettiva data mancante
Vi ringrazio.
di Gianro data: 07/03/2015 15:51:11
UP
di Mister_x (utente non iscritto) data: 07/03/2015 17:14:27
ciao
normalmente si inserisce un file, non dico con migliaia di dati ma un centinaio si, e da qui si puo' creare una sub() per fare questo lavoro, e stabilire come ottenere i vari valori mancanti
questo perche' ricostruire un tuo file non conoscendo la struttura e nemmeno i vari valori inseriti e come buttarci in un pozzo senza sapere a che altezza dobbiamo sbattere la testa
PS POSTA UN FILE
ciao
di Gianro data: 09/03/2015 14:37:45
Ciao,
ho allegato un file come da te richiesto.
Grazie.
di Mister_x (utente non iscritto) data: 09/03/2015 22:58:53
ciao
sub() da provare, e' un po bruttina ma penso che funzioni
inserire nel foglio interessato
ciao
Option Explicit
Sub Agg_Riga()
Dim i As Long
Dim OraI As Double
Inizio:
i = 2
OraI = Cells(2, 2)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Hour(OraI + (1 / 24)) <> Hour(Cells(i + 1, 2)) Then
Rows(i + 1 & ":" & i + 1).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
If Hour(Cells(i, 2)) = 23 Then
Cells(i + 1, 1) = Cells(i, 1) + 1
Cells(i + 1, 2) = TimeValue("00.00.00")
Exit For
Else
Cells(i + 1, 1) = Cells(i, 1)
Cells(i + 1, 2) = Cells(i, 2) + (1 / 24)
Exit For
End If
End If
If Hour(Cells(i, 2)) = 23 Then
OraI = TimeValue("00.00.00")
Else
OraI = Cells(i + 1, 2)
End If
Next i
If i < Cells(Rows.Count, 1).End(xlUp).Row Then GoTo Inizio
End Sub
|
Vuoi Approfondire?