A continuación veremos un programa en Excel VBA que ordena los números .
Situación:
Coloca un botón de comando en tu hoja de trabajo y añade las siguientes líneas de código:
1. Primero, declaramos tres variables de tipo Entero y un objeto de Rango.
Dim i Como Entero, j Como Entero, temp Como Entero, rng Como Rango
2. Inicializamos el objeto Range rng con los números de la columna A. Usamos la propiedad CurrentRegion para esto. CurrentRegion es útil cuando no conocemos de antemano los límites exactos de un rango (queremos que este programa funcione para 9 números pero también para 90 números).
Set rng = Range(«A1»).CurrentRegion
3. Empezamos dos para los siguientes bucles.
Para i = 1 a rng.Count Para j = i + 1 Para rng.Count
Explicación: rng.Count es igual a 9, por lo que las dos primeras líneas de código se reducen a For i = 1 a 9 y For j = i + 1 a 9. Para i = 1, j = 2, 3, … …8 y 9 son comprobadas.
4. Para clasificar los números correctamente, comparamos el primer número con el siguiente. Si el siguiente número es más pequeño, intercambiamos los números. Añade el siguiente enunciado «Si es así».
Si rng.Cells(j) < rng.Cells(i) Entonces Finalizar si
Si la afirmación anterior es cierta, intercambiamos los números.
Por ejemplo: para i = 1 y j = 2, se comparan los números 2 y 10. La afirmación anterior no es cierta. Por lo tanto, no hay necesidad de intercambiar los números. El Excel VBA incrementa j en 1 y repite las líneas de código para i = 1 y j = 3. Se puede ver fácilmente que 5 es mayor que 2, así que aún así no hay necesidad de intercambiar los números. Obtenemos el mismo resultado para j = 4, j = 5 y j = 6. Cuando llegamos a j = 7, la afirmación anterior es cierta ya que 1 es más pequeño que 2.
5. Intercambiamos los números. Guardamos temporalmente un número en la memoria temporal, para que Excel VBA pueda intercambiar los números correctamente. Añade las siguientes líneas de código en la sentencia If.
‘Intercambiar los números temp = rng.Cells(i) rng.Cells(i) = rng.Cells(j) rng.Cells(j) = temp
6. Cerramos el segundo bucle For Next (Fuera de la declaración If).
Siguiente j
Para i = 1 y j = 7, Excel VBA intercambió los números. Eso significa que obtenemos 1 en la primera posición y 2 en la posición 7. Ahora que tenemos 1 en la primera posición, compararemos este valor con 5 (para j = 8) y 4 (para j = 9). No hay necesidad de intercambiar los números (1 es el número más pequeño). De esta manera, Excel VBA obtiene (para i = 1) el número más pequeño en la primera posición. Para obtener el segundo número más pequeño en la segunda posición, el Excel VBA repite exactamente los mismos pasos para i = 2. Para obtener el tercer número más pequeño en la tercera posición, el Excel VBA repite exactamente los mismos pasos para i = 3, etc.
7. Cierre el primer bucle For Next (Fuera de la declaración If).
Siguiente…
8. Pruebe su programa.
Resultado: