Jump to content
  • Debido a la crisis sanitaria, hasta el día 31 de marzo, el registro al foro de Ayuda Excel será totalmente gratuito para facilitar el teletrabajo. Todos los registros que se produzcan entre estas fechas tendrán acceso gratuito ilimitado a la comunidad hasta el 30 de abril.

    Regístrate

    Si te surge alguna duda mientras estás trabajando en casa con Excel, ya tienes a quien preguntar.

    Espero que esta medida te sirva de ayuda. Frenar la expansión del coronavirus depende de todos. Sé responsable.

paikerr

RESTAR UNA HORA EN UNA CELDA CON AYUDA DE UNA MACRO

Recommended Posts

Hola a todxs,

 

Con el nuevo cambio de hora en España, estoy registrando algunos problemillas a la hora de extraer algunos datos de Internet, y me gustaría saber que código tengo que introducir para restar una hora en todas mis celdas a través de una macro.

 

Si por ejemplo, la celda "A1" es igual a las 12:00 h., ¿qué macro tendría que introducir para que indique las 11:00 h.?

 

...
    Dim hora As Variant
    hora = "12:00"

    With Cells(1, 1)
        .Value = hora - 1
        .NumberFormat = "h:mm;@"
    End With
...

Obviamente esto no puede ser, porque el valor de las horas oscilan entre 0 y 1.

De manera que si le resto una unidad, por coj... saldría un número negativo.

Edited by paikerr

Share this post


Link to post
Share on other sites

La hora se expresa en fracciones de día aunque tu la veas formateada.

Para observar este fenómeno, solo tienes que cambiar el formato de las celdas con la hora a número con 6 decimales.

Selecciona las celdas a las que les quieras restar la hora y ejecuta esta macro.

Sub Restar1Hora()
For Each celda In Selection
   celda.Offset(0, 1) = celda - (1 / 24)
   celda.Offset(0, 1).NumberFormat = "hh:mm"
Next
End Sub

 

Share this post


Link to post
Share on other sites
Hace 1 minuto , Antoni dijo:

La hora se expresa en fracciones de día aunque tu la veas formateada.

Para observar este fenómeno, solo tienes que cambiar el formato de las celdas con la hora a número con 6 decimales.

Selecciona las celdas a las que les quieras restar la hora y ejecuta esta macro.


Sub Restar1Hora()
For Each celda In Selection
   celda.Offset(0, 1) = celda - (1 / 24)
   celda.Offset(0, 1).NumberFormat = "hh:mm"
Next
End Sub

 

Si la hora esta como texto, como en tu macro, la macro no funcionará.

 

Edited by Antoni

Share this post


Link to post
Share on other sites
Guest Cacho R

Por supuesto, la versión macrística de lo mostrado en la producción audio-visual sería:

Range("E1").Copy
Range("C2:C21").PasteSpecial Operation:=xlSubtract

 

Share this post


Link to post
Share on other sites
Guest Cacho R
Hace 4 horas, paikerr dijo:

me acabas de demostrar una vez más que en Excel nunca voy a dejar de aprender cosas nuevas...

Y... Nos pasa a todos.

 

Share this post


Link to post
Share on other sites
Guest Cacho R
Hace 15 minutos , Antoni dijo:

¿Y? :lol:

Mira, Hijo: intentaré explicártelo como a un lactante. Veamos:

- Si andas por "la vida" exponiendo y desgastando tu única vida, corres el riesgo de perderla... ¡Y de perderte!

- Por el contrario si exploras otras alternativas, no sólo tu vida será más variada, entretenida, sorprendente y eficaz sino que: ¡No correrás el riesgo de perderte por completo y para siempre!

En resumen, mi Amigo: vivir es crecer, y crecer es... ¡que se note que creciste!

¿Comprendido, niñito Antoni?... :)

Share this post


Link to post
Share on other sites

Prefiero perder la vida explorando nuevos métodos, que perderme en un círculo sin fin como si fuera un hamster.

Siempre he dicho que las fórmulas son un lenguaje de programación, repetitivo, de difícil codificación, de difícil comprensión, de difícil implantación, limitado y desarrollado por estreñidos. Eso si, paz y amor, paz y amor. :P

Edited by Antoni

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png