/ / Comparar fechas y horas en Excel VBA

Comparar fechas y horas en Excel VBA

Este ejemplo te enseña cómo comparar fechas y horas en Excel VBA. Las fechas y horas se almacenan como números en Excel y cuentan el número de días desde el 0 de enero de 1900. Lo que ve depende del formato del número.

1. Ingrese algunos números en la columna A.

Números

2. Estos números son fechas. Esta es una manera perfecta de ingresar algunas fechas sin preocuparse por el formato de fecha. Cambie el formato a Fecha (haga clic con el botón derecho en el encabezado de la columna A, Formato de celdas y elija Fecha).

Resultado:

fechas

Nota: Las fechas están en formato estadounidense. Meses primero, días segundo. Este tipo de formato depende de la configuración regional de Windows.

Coloque un botón de comando en su hoja de trabajo y agregue las siguientes líneas de código:

3. Declara la variable i de tipo Integer.

Dim i As Integer

4. Agregue un bucle For Next.

For i = 1 To 5

Next i

5. La función Fecha devuelve la fecha actual sin la hora. Agregue la siguiente línea de código al bucle, para resaltar todas las celdas que contienen la fecha actual (22/12/2013).

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

Resultado:

Fechas iguales a

6. Agregue la siguiente línea de código al bucle, para resaltar todas las fechas anteriores al 19/04/2011.

If Cells(i, 1).Value < DateValue("April 19, 2011") Then Cells(i, 1).Font.Color = vbRed

Resultado:

Fechas más temprano que

7. Pero qué pasa con los tiempos, te oímos decir. Son los decimales. Vuelva al formato general y cambie los números a números decimales.

Numeros decimales

8. Ahora cambie el formato al formato "Fecha y hora".

Formato de fecha y hora

Resultado:

Fechas y horarios

9. Si desea resaltar todas las celdas que contienen la fecha actual, no podemos usar la línea de código en 5 más. Por qué no? Porque los números en la columna A son ahora números decimales. Compararlo con la fecha (un número entero) no daría ninguna coincidencia. (¡Solo daría una coincidencia con el 22/12/2013 a medianoche exactamente!) La siguiente línea de código funciona:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

Explicación: simplemente usamos la función Int. La función Int redondea un número al entero más cercano. De esta manera podemos obtener las fechas sin las horas y compararlas con la Fecha.

Resultado:

Fechas sin tiempos iguales a

10. Agregue la siguiente línea de código para resaltar todas las celdas que contienen horas en la mañana.

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

Explicación: solo necesitamos los decimales, por lo tanto, restamos la parte entera. El mediodía (a mitad del día) se representa como 0.5. Los decimales inferiores a 0,5 son los horarios de la mañana.

Resultado:

Tiempos de la mañana

Lea también: