A continuación, veremos un programa en Excel VBA que ordena números .

Situación:

Ejemplo de clasificación de números

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

1. Primero, declaramos tres variables de tipo Integer y un objeto Range.

Dim i As Integer, j As Integer, temp As Integer, rng As Range

2. Inicializamos el objeto Range rng con los números en la columna A. Usamos la propiedad CurrentRegion para esto. CurrentRegion es útil cuando no conocemos los límites exactos de un rango de antemano (queremos que este programa funcione para 9 números pero también para 90 números).

Set rng = Range("A1").CurrentRegion

3. Comenzamos dos bucles For Next.

For i = 1 To rng.Count
    For j = i + 1 To 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. For i = 1, j = 2, 3, ..., 8 y 9 se comprueban.

4. Para ordenar los números correctamente, comparamos el primer número con el siguiente. Si el siguiente número es menor, intercambiamos los números. Agregue la siguiente declaración If Then.

If rng.Cells(j) < rng.Cells(i) Then

End If

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 es necesario intercambiar los números. Excel VBA incrementa j en 1 y repite las líneas de código para i = 1 y j = 3. Puede ver fácilmente que 5 es mayor que 2, por lo que aún no es necesario 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 verdadera ya que 1 es menor que 2.

5. Intercambiamos los números. Almacenamos temporalmente un número en la temperatura, para que Excel VBA pueda intercambiar los números correctamente. Agregue las siguientes líneas de código en la instrucción If.

'swap numbers
temp = rng.Cells(i)
rng.Cells(i) = rng.Cells(j)
rng.Cells(j) = temp

6. Cerramos el segundo ciclo For Next (Fuera de la instrucción If).

Next 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 es necesario 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, 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, Excel VBA repite exactamente los mismos pasos para i = 3, etc.

7. Cierre el primer ciclo For Next (fuera de la instrucción If).

Next i

8. Pruebe su programa.

Resultado:

Ordenar números en Excel VBA

7/11 Completado! Obtenga más información sobre los bucles>
Capítulo siguiente: Errores de macro