Cómo convertir una serie de tiempo de puntos de quiebre a una serie de tiempo de resolución de 1 segundo en Excel.
Tengo una serie de tiempo con puntos de interrupción (cuando el valor supervisado cambia se crea una nueva marca de tiempo), que se crea utilizando una precisión de 1 segundo (marcas de tiempo en formato aaaa:mm:dd:ss) y me gustaría cambiar esa serie de tiempo a una serie de tiempo con una resolución de 1 segundo.
Básicamente esto significa agregar filas y marcas de tiempo adicionales entre las marcas de tiempo de los puntos de interrupción, y estas nuevas marcas de tiempo deben contener el último valor de la entidad supervisada.
Ejemplo
Serie de tiempo con puntos de interrupción
Puntos de interrupción
Serie de tiempo con resolución de 1 segundo deseada
1 segundo de resolución
etc. Espero que entiendas la idea.
El problema es que no sé cómo comenzar con este problema, no he podido encontrar muchos casos similares en los archivos.
¿Cuál podría ser una buena manera de abordar este tipo de dilema y cómo implementar la solución descrita como un código para VBA?
Cualquier ayuda es apreciada.
Gracias
Saludos
Muje
EDICIÓN:
He creado un pequeño script que puede agregar filas faltantes y duplicar el valor de arriba en esta nueva fila. Sin embargo, todavía tengo dificultades con los casos en los que faltan más de 1 segundo de la serie de tiempo con puntos de interrupción. Código a continuación:
Opción explícita
Sub BP_to_sec()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = wb.Sheets(“Test”)
Dim LastRow As Long
Dim RowStep As Long
Dim S As Double
S = (1 / 86400)
LastRow = Range(“A” & Rows.Count).End(xlUp).Row
For RowStep = LastRow To 3 Step -1
If Not IsEmpty(Range(“A” & RowStep)) Then
If (CDate(Range(“A” & RowStep)) > (CDate(Range(“A” & RowStep – 1)) + S)) Then
Range(“A” & RowStep).EntireRow.Insert
Cells(RowStep, 1).Value = Cells(RowStep – 1, 1).Value + S
Cells(RowStep, 2).Value = Cells(RowStep – 1, 2).Value
End If
End If
Next
MsgBox (“Ordenado”)
End Sub
davy.ai
Para convertir una serie temporal de puntos de interrupción a una serie temporal de resolución de 1 segundo, es necesario agregar filas y marcas de tiempo adicionales entre las marcas de tiempo de los puntos de interrupción, y estas nuevas marcas de tiempo deben contener el último valor de la entidad monitoreada.
Una forma de abordar este dilema es utilizar un código VBA como el proporcionado en la edición de la pregunta. Este código verifica si hay al menos 1 segundo de tiempo perdido entre dos marcas de tiempo consecutivas, y si las hay, inserta una nueva fila con una marca de tiempo exactamente un segundo después de la marca de tiempo anterior y el valor de la fila anterior.
Sin embargo, el uso de este código solo funcionará si hay como máximo 1 segundo de tiempo perdido entre dos marcas de tiempo consecutivas. Si hay más de 1 segundo de tiempo perdido, el código solo insertará una nueva fila y no podrá duplicar los valores correctamente. En este caso, se necesita un algoritmo más sofisticado para insertar las filas faltantes y duplicar los valores adecuadamente.
En general, para implementar la solución descrita como un código para VBA, necesitas:
Siguiendo este enfoque, puedes crear una serie temporal de resolución de 1 segundo a partir de una serie temporal de puntos de interrupción.