Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ejemplo de If Then Else aplicado a verificación de fechas

| 2 comentarios

El siguiente ejemplo, dará las pautas para verificar una base de datos en la que si la fecha en la que se vendió el producto figura días anteriores a la fecha en la que se fabricó nos copie dicha producto en una hoja a parte para poder luego corregirlo.

Empezamos definiendo nuestras variables:

Dim numero As String
Dim numero2 As String

Luego, definimos nuestra macro como Verificar1:

Sub Verificar1()

Digamos que en nuestro reporte tenemos siempre la fecha de fabricación y la fecha de venta siempre en columnas A y Q. Pero, como toda base de datos, la cantidad de datos que uno quiera verificar vairará dependiendo a la fecha de consulta, entonces nuestra macro debe "barrer" todas las filas verificando que nuestras fechas sean las correctas. Para solucionar este problema, se plantea el siguiente programa:

Sub Verificar1()
'Para mi caso, el reporte siempre lo exporto en la hoja1 de un archivo de excel
Sheets("Sheet1").Select

'utilizaremos esto para poder almacenar en nuestra variable "ultfila" la ultima celda con datos de nuestra
'base de datos
ultfila = Cells(Rows.Count, 2).End(xlUp).Row

'Utilizaremos la herramienta "For" para almacenar en "contador" números desde el 2 (la primera fila de la
'base de datos siempre es el encabezado) hasta el número que almacena "ultfila".
For contador = 2 To ultfila

'Con esto veremos si la celda que se localiza en las columna
'A y fila con el numero "contador" es mayor a la celda que se localiza en la columna Q y fila con el número "contador"
'Así mismo, "contador" irá cambiando gracias "For" (entre 2 y el número "ultfila")
If Cells(contador, 1) > Cells(contador, 7) Then
numero = contador & ":" & contador
Rows(numero).Select

'si se cumple la primera desigualdad, entonces copiaremos dicha fila en la hoja2 (sheet2)
Selection.Copy
Sheets("Sheet2").Select

'con esto aseguramos que las filas evaluadas que cumplen con el If, sean copiadas una tras otra
ultfila2 = Cells(Rows.Count, 2).End(xlUp).Row + 1
numero2 = ultfila2 & ":" & ultfila2
Range(numero2).Select
ActiveSheet.Paste
Sheets("Sheet1").Select

'si no se cumple el If, entonces haremos que la fila evaluada se coloree de amarillo
Else
numero = contador & ":" & contador
Rows(numero).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next
End Sub

Con todo esto, podremos agilizar una tarea que es muy tediosa si se tiene una gran base de datos.

Adjunto Excel, para un mejor entendimiento Ejemplo de If Then Else

Elaborado por: Juan Carlos Chuquizuta

2 comentarios

  1. Me pareció muy interesante la aplicación de If Then Else para la verificación de fechas, pero me surgio una duda en la siguiente parte:
    For contador = 2 To ultfila

    este es un contador infinito, pues Ultfila no tiene un limite.
    Quisiera saber si es necesario declarar el fin del conteo.
    Saludos.

  2. porque hacerlo con las celdas de la hoja de excel, porque no mejor hacer la macro y que haga todo por codigo, así ya nomas exportamos los datos a una hoja

Deja una respuesta

Los campos requeridos estan marcados con *.