A continuación veremos un programa en Excel VBA que encuentra el segundo valor más alto .
Situación:
1. Primero, declaramos dos objetos de rango y dos variables de tipo Doble. Llamamos a los objetos Range rng y cell. Una doble variable que llamamos de mayor valor, y una doble variable que llamamos de mayor valor.
Dim rng As Range, cell As Range Diminuto valor más alto como el doble, segundo valor más alto como el doble
2. Inicializamos el objeto Rango rng con el rango seleccionado y las dos variables dobles con el valor 0.
Set rng = Selección Valor más alto = 0 secondHighestValue = 0
3. Primero, queremos encontrar el valor más alto. Queremos comprobar cada celda en un rango seleccionado al azar (este rango puede ser de cualquier tamaño). En Excel VBA, puedes usar el bucle For Each Next para esto. Añade las siguientes líneas de código:
«Encontrar el valor más alto Para cada célula en el rng La siguiente celda
Nota: el rng y la celda son elegidos al azar aquí, puedes usar cualquier nombre. Recuerda referirte a estos nombres en el resto de tu código. La línea verde es un comentario y sólo se añade aquí para proporcionar información sobre este pedazo de código.
4. Comprobamos cada célula en este rango. Si es mayor que el valor más alto, escribimos el valor en la variable de valor más alto. Añadimos la siguiente línea de código al bucle.
Si celda.Valor > valor más alto Entonces valor más alto = celda.Valor
Nota: el primer valor es siempre más alto que el valor más alto porque el valor inicial del valor más alto es 0.
5. Segundo, queremos encontrar el segundo valor más alto. Añadimos otro para cada bucle siguiente.
«Encontrar el segundo valor más alto Para cada célula en el rng La siguiente celda
6. Volvemos a comprobar cada celda en el rango seleccionado. Si es mayor que el segundo ValorMásAlto y menor que el ValorMásAlto, escribimos el valor en la variable segundo ValorMásAlto. Añadimos la siguiente línea de código al bucle.
Si celda.Valor > segundoValorMásAlto Y celda.Valor < valor más alto Entonces segundoValorMásAlto = celda.Valor
7. Finalmente, mostramos el segundo valor más alto usando un MsgBox.
MsgBox «Second Highest Value is » & secondHighestValue
8. Coloca tu macro en un botón de comando, selecciona los números y haz clic en el botón de comando.
Resultado: