¿Como crear una serie de fechas con hora en Excel al apretar un botón teniendo la fecha inicial y la fecha final?

Estoy trabajando en Excel 2010 y tengo un fecha inicial con hora(20/01/2015 05:00) y una fecha final con hora(22/01/2015 05:00) mi pregunta es como puedo hacer para que me genere una lista ó serie de fechas de cada hora desde la fecha inicial hasta la fecha final, le explico el primer valor de la lista seria 22/01/2015 06:00, el segundo seria 22/01/2015 07:00, el tercero es 22/01/2015 08:00 y así hasta la fecha final. Ojala pudiera ayudarme.

2 Respuestas

Respuesta
1

Para ejecutar un proceso mediante un botón, estos serían los pasos:

Entrar al Editor (presioná juntas Alt y F11)

Insertar un módulo

Allí copias la macro que dejo a continuación.

Regresa a la hoja y dibuja un botón con la barra de formulario (Ficha Programador, Controls, Insertar)

Clic derecho sobre el botón, opción Asignar Macro y le asignas la que acabas de copiar.

Sub RellenaHoras()
'x Elsamatilde
Application.ScreenUpdating = False
'primera celda donde se encuentra la hora de inicio
Range("A2").Select
'se repite el bucle mientras el resultado sea <= al de fecha final, ubicada en B2
While ActiveCell.Value <= Range("B2")
    ActiveCell.Offset(1, 0).Select
'se incrementa el valor de la celda + el contenido de D2 donde se habrá ingresado "01:00"
    ActiveCell.FormulaR1C1 = "=R[-1]C+R2C4"
'se deja el valor
    ActiveCell.Copy
    ActiveCell.PasteSpecial Paste:=xlValues
Wend
'quita el parpadeo de copiado
Application.CutCopyMode = False
End Sub

Solo debes ajustar las referencias o celdas donde tendrás tus datos. En celda D2 coloqué 01:00  para que tome el incremento desde allí. Si cambias de ubicación debes indicarlo en donde dice: R2C4  (R= fila, C = columna)

Probala y si todo queda resuelto no olvides valorar la respuesta.

¡Gracias! Elsa

Me sirvió bastante tu apoyo solo hice alguna variaciones al sumar la hora:

Sub RellenaHoras()

'En esta celda empecé la serie

Range("e8").Select

'La fecha inicial la puse en e5 y le sume 1hora

ActiveCell.FormulaR1C1 = "=R[-3]C+TIME(1,0,0)"
ActiveCell.Offset(0, 1).Select

'la fecha final la puse en e6

While ActiveCell.Value < Range("e6")

ActiveCell.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=R[-1]C+TIME(1,0,0)"
Wend

End Sub

Lo que no he logrado es que la fecha final del bucle sea igual a la fecha final pero bueno creo que es cuestión de observar mejor el código.

¡Muchas Gracias!

Veo una línea que parece no ser necesaria: ActiveCell.Offset(0, 1).Select

Luego, si observas las fórmulas que te quedan en las celdas, verás que no se guardan con a.m. y seguramente tu celda en E6 sí lo tiene.

Por eso lo más seguro fue colocar la hora en otra celda, pero bueno, con TIME como mucho te suma 1 hora más ;)

Si el tema queda resuelto, no olvides valorarla respuesta.

Sdos!

Es cierto esa línea estaba de más

Saludos.

¡Gracias!

Entonces creo que mi respuesta es mejor que la tuya, pero en fin...

Respuesta
1

A todos:
Excel ya tiene un método eficiente para conseguir esto. Su versión "VBA" sería:

Sub RellenaHoras()
[e5].Copy [e8]
[e8].DataSeries Rowcol:=xlColumns, Type:=xlChronological, Date:=xlDay, _
  Step:=1 / 24, Stop:=[e6]
End Sub

Lo que en su versión más "económica" nos llevaría a:

Sub RellenaHoras()
  [e5].Copy [e8]
  [e8].DataSeries 2, 3, 1, 1 / 24, [e6]
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas