En esta lección vas a aprender cómo identificar el valor máximo y mínimo de un rango de números de una manera muy sencilla, usando la función MAX y MIN en Excel.
Como sabes, existen una serie de funciones ya desarrolladas “de serie” en VBA. Es más, ya hemos visto alguna y hoy vamos a ver dos más, una para calcular el máximo y otra para calcular el mínimo de un rango de números.
1. Application.max(Range). Máximo valor de un rango.
2. Application.min(Range). Mínimo valor de un rango.
Como ves es muy fácil, tan solo tienes que llamar a la función, le dices el rango de números y ya está. Por lo tanto, siempre que puedas, usa funciones, tanto por comodidad como por optimización de código.
A continuación, vamos a poner algún ejemplo para verle utilidad al invento.
En primer lugar, crea un nuevo libro, abre el editor VBA e inserta 2 módulos. Después, copia en ellos las siguientes macros.
Macro 1. Identificar el máximo de un rango de celdas.
'Macro que identifica al alumno con mejor nota y lo marca en azul
'Guardamos en la variable mejornota el máximo del rango C2-C12
mejornota = Application.Max(Range("D2:D12"))
For i = 2 To 12
'Si la nota coincide con la mejor nota, entonces
If Cells(i, "D").Value = mejornota Then
'Colorea de azul el nombre, apellido y nota
Range(Cells(i, "B"), Cells(i, "D")).Interior.Color = RGB(90, 138, 198)
End If
Next
End Sub
Macro 2. Identificar el mínimo de un rango de celdas.
'Macro que identifica al alumno con peor nota y lo marca en rojo
'Guardamos en la variable peornota el mínimo del rango C2-C12
peornota = Application.Min(Range("D2:D12"))
For i = 2 To 12
'Si la nota coincide con la mejor nota, entonces
If Cells(i, "D").Value = peornota Then
'Colorea de azul el nombre, apellido y nota
Range(Cells(i, "B"), Cells(i, "D")).Interior.Color = RGB(248, 105, 107)
End If
Next
End Sub
Macro 3. Restablecer la hoja de cálculo.
'Macro que restablece la hoja de cálculo
'Quita el color de fondo del rango
Range("B2:D12").Interior.Color = RGB(255, 255, 255)
'Estos tres comandos reestablecen la cuadrícula de la hoja excel
Range("B2:D12").Interior.Pattern = xlNone
'Estos tres comandos reestablecen la cuadrícula de la hoja excel
Range("B2:D12").Interior.TintAndShade = 0
'Estos tres comandos reestablecen la cuadrícula de la hoja excel
Range("B2:D12").Interior.PatternTintAndShade = 0
End Sub
En segundo lugar, rellena la hoja tal y como se muestra en la figura. Para ello, tendrás que crear 3 botones y asignarles las macros anteriores.
A continuación, te dejo dos enlaces donde explico cómo configurar Microsoft Excel para el uso de macros y cómo asignar macros a botones, por si te interesan.
Como resultado, la primera de las macros va a localizar al alumno que tiene la mejor nota (o alumnos si hay varios que comparten la máxima nota).
En primer lugar, con la función MAX de Excel, buscamos cual es el valor máximo del rango de notas. A continuación, usando un bucle FOR localizamos las celdas con ese valor máximo y cuando las localizamos marcamos en azul el nombre, apellidos y nota del alumno en cuestión.
La segunda macro funciona igual que la primera, pero buscando el mínimo de las notas con el uso de la función MIN. Así, va a marcar de rojo el nombre, apellidos y nota del alumno o alumnos con dicha nota.
Finalmente, la tercera de las macros restablece la hoja de cálculo para limpiarla y poder volver a ejecutar las macros anteriores.
Con esto llegamos al final de la decimonovena lección, en la que has aprendido a usar la función MAX y MIN de Excel para identificar el máximo y mínimo valor de un rango de celdas.
Sobre todo, me interesa que te quedes con la idea de que utilizar funciones va a optimizar nuestro código, además de hacernos la vida más fácil. También te digo que a veces no cubren todas nuestras necesidades y es necesario desarrollar algo a medida que cumpla la funcionalidad que estamos buscando.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Nos vemos en el próximo capítulo.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
« L18. Función GoTo en VBA.
L20. Funciones ScrollRow y ScrollColumn en VBA. »
0 comentarios