¿Cómo inserto celdas comparando los valores con los de otra columna?

Estoy trabajando con datos de muestreo que se realizan cada 15 minutos. En una columna tengo la hora de muestreo y en otra los valores. Una vez que obtengo todos los datos del año, tengo que cambiar dichos muestreos a una hora, pero eso está controlado. El problema me surge cuando estos muestreos comienzan a diferentes horas cada día, y a mi me interesa que comiencen a las 0:00 horas, por lo que tengo una columna de fecha, otra de hora del muestreo y otra con los datos.

Se me ha ocurrido insertar una columna con todas las franjas horarias del día cada 15 minutos, y estas celdas repetirlas a lo largo del año. Lo que estoy haciendo de forma manual es insertar celdas vacías en las franjas horarias que no tengo datos (esos valores a posteriori valdrán cero para mis cálculos), pero esto está resultando demasiado tedioso. Si esto fuese para un año solo no habría problema, pero tengo que hacerlo para varios años.

¿Alguien sabe si en excel existe alguna orden o macro que me pueda facilitar el trabajo?

1 respuesta

Respuesta
1

Puedes enviarme un archivo con varios ejemplos, en una hoja me pones la información tal cual la tienes, y en otra hoja me pones los resultados que esperas, explícame con imágenes, con colores y comentarios lo que necesitas.

Hola Dante Amor.

Te he enviado un archivo al correo que me facilitas. Gracias por interesarte en mi problema.

Saludos.

Tony

Esta es la macro para insertar las horas que faltan.

Sub Procesar()
'Por.Dante Amor
    Dim f1 As Date, f2 As Date
    Application.ScreenUpdating = False
    Set h1 = Sheets("Datos originales")
    Set h2 = Sheets("Resultado")
    '
    'limpiar datos
    '
    u = h2.UsedRange.Rows(h2.UsedRange.Rows.Count).Row + 2
    h2.Range("A3:C" & u).ClearContents
    año = Year(h1.[A3])
    '
    'Poner fechas
    f1 = "01/01/" & año
    f2 = "31/12/" & año
    j = 3
    For i = f1 To f2
        h2.Cells(j, "A") = i
        j = j + 96
    Next
    '
    'Poner horas
    h2.[B3] = "00:00"
    h2.[B4] = "00:15"
    h2.[B3:B4].AutoFill h2.Range("B3:B" & j - 1), xlFillDefault
    h2.Range("C3:C" & j - 1) = 0
    '
    'Poner potencias
    potencias
    '
    h2.Select
    Application.ScreenUpdating = True
    MsgBox "Horarios completados"
End Sub
Sub potencias()
'Por.Dante Amor
    Set h1 = Sheets("Datos originales")
    Set h2 = Sheets("Resultado")
    '
    u2 = h2.Range("B" & Rows.Count).End(xlUp).Row
    u1 = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(u1, "A") = "x"
    fin = 0
    For i = 3 To u1
        If h1.Cells(i, "A") <> "" Then
            If fin > 0 Then
                h1.Range(h1.Cells(ini, "C"), h1.Cells(fin, "C")).Copy _
                h2.Cells(destino, "C")
                fin = 0
            End If
            ini = i
            Set b = h2.Range("A3:A" & u2).Find(h1.Cells(i, "A"))
            If Not b Is Nothing Then
                For j = b.Row To u2
                    hora1 = Hour(h1.Cells(i, "B"))
                    minu1 = Minute(h1.Cells(i, "B"))
                    hora2 = Hour(h2.Cells(j, "B"))
                    minu2 = Minute(h2.Cells(j, "B"))
                    If hora1 & minu1 = hora2 & minu2 Then
                        destino = j
                        Exit For
                    End If
                Next
            End If
        Else
            fin = i
        End If
    Next
    h1.Cells(u1, "A") = ""
End Sub

No olvides valorar la respuesta.

¡Gracias! Dante Amor.

La macro funciona a la perfección.

Hola:

Tengo un problema con la macro que me enviaste hace unos días y desconozco la causa. Me ha funcionado correctamente con todos los datos que he introducido, he incluso he creado otra macro a partir de la tuya cambiado el muestreo a 10 minutos y sin problema, pero con los datos de dos archivos en concreto me da el siguiente error:

Se ha producido el error '1004' en tiempo de ejecución:

Error definido por la aplicación o el objeto

Al depurar me marca las siguientes dos líneas:

h1.Range(h1.Cells(ini, "C"), h1.Cells(fin, "C")).Copy _
h2.Cells(destino, "C")

Te envío también el archivo por mail por si puedes echarle un vistazo.

Desconozco cual puede ser el problema. ¿Puedes orientarme un poco?.

Gracias Dante.


                    

Tendría que probar el funcionamiento a 10 minutos y revisar los archivos. De momento se me ocurre que tal vez tengas las celdas combinadas o que tal vez no encontró la hora destino y por eso marca error.

Las horas que se encuentra en el origen deben existir en la horas destino, si tienes una hora como 8:37, esa hora no se encuentra, porque las horas son 8:30, 8:45, etc.

Revisa las horas.

Si quieres que revise los archivos deberás crear una nueva pregunta en todoexpertos, en el tema de excel.

¡Gracias! Dante.

He revisado las horas y ese no parece ser el problema. Voy a crear una nueva pregunta en el tema de excel.

Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas