Option Explicit Sub InserisciDatoMancante() Dim UR As Long 'ultima riga Dim Diff As String 'differenza Dim x As Long 'contatore ciclo Application.ScreenUpdating = False UR = Cells(Rows.Count, 1).End(xlUp).Row 'trova l'ultima riga in colonna A For x = UR To 3 Step -1 'ci si ferma alla riga 3 visto che c'è un'intestazione Diff = CDate(CDate(Range("A" & x)) - CDate(Range("A" & x - 1))) 'verifica se v'è differenza tra i dati If Diff > "00:01:00" Then 'se superiore al minuto procedi Range("A" & x).EntireRow.Insert 'in tal caso inserisci una riga Range("A" & x) = Range("A" & x + 1) - CDate("00:01:00") 'e relativo dato in colonna A x = x + 1 'serve per ripetere il controllo in caso manchino più dati End If Next Application.ScreenUpdating = True End Sub
rollis13, 28/06/2019 23.55:Vedi se riesci ad utilizzare questa mia macro come base di partenza. Va bene messa in un Modulo vba o anche nel Modulo del Foglio interessato.Option Explicit Sub InserisciDatoMancante() Dim UR As Long 'ultima riga Dim Diff As String 'differenza Dim x As Long 'contatore ciclo Application.ScreenUpdating = False UR = Cells(Rows.Count, 1).End(xlUp).Row 'trova l'ultima riga in colonna A For x = UR To 3 Step -1 'ci si ferma alla riga 3 visto che c'è un'intestazione Diff = CDate(CDate(Range("A" & x)) - CDate(Range("A" & x - 1))) 'verifica se v'è differenza tra i dati If Diff > "00:01:00" Then 'se superiore al minuto procedi Range("A" & x).EntireRow.Insert 'in tal caso inserisci una riga Range("A" & x) = Range("A" & x + 1) - CDate("00:01:00") 'e relativo dato in colonna A x = x + 1 'serve per ripetere il controllo in caso manchino più dati End If Next Application.ScreenUpdating = True End Sub
Giuliam94, 29/06/2019 17.43:Ho inserito "On Error Resume Next" e sembrerebbe che abbia funzionato. Ho provato a controllare che abbia inserito tutto e mi pare di sì. Grazie per l'aiuto!
"On Error Resume Next" e sembrerebbe che abbia funzionato.
rollis13, 29/06/2019 18.34:"On Error Resume Next" e sembrerebbe che abbia funzionato. NON è mai una soluzioni ai problemi. Va usato con molta attenzione e serve solo per superare problemi con dati che in realtà sono inutili (o fuori luogo).
Option Explicit Sub InserisciDatoMancante() Dim UR As Long 'ultima riga Dim Diff As String 'differenza Dim x As Long 'contatore ciclo Application.ScreenUpdating = False Application.Calculation = xlManual UR = Cells(Rows.Count, 1).End(xlUp).Row 'trova l'ultima riga in colonna A For x = UR To 3 Step -1 'ci si ferma alla riga 3 visto che c'è un'intestazione Diff = Minute(Range("A" & x) - Range("A" & x - 1)) 'calcola differenza tra i dati If Diff > 1 Then 'se superiore al minuto procedi Range("A" & x).EntireRow.Insert 'in tal caso inserisci una riga Range("A" & x) = Range("A" & x + 1) - CDate("00:01:00") 'e relativo dato in colonna A 'serve per ripetere il controllo in caso manchino più dati consecutivi se non vi sono salti all'indietro If CDate(Range("A" & x - 1)) < CDate(Range("A" & x)) Then x = x + 1 End If Next Application.ScreenUpdating = True Application.Calculation = xlAutomatic End Sub