/ / Ordenar números en Excel VBA

Ordenar números en Excel VBA

A continuación veremos un programa en Excel VBA ese ordena los números.

Situación:

Ejemplo de ordenar 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. Para 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 número. Si el siguiente número es más pequeño, intercambiamos los números. Agregue la siguiente instrucció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, los números 2 y 10 están siendo comparados. La afirmación anterior no es cierta. Por lo tanto, no hay necesidad de intercambiar los números. Excel VBA incrementa j por 1 y repite las líneas de código para i = 1 y j = 3. Puede ver fácilmente que 5 es más grande 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 declaración anterior es verdadera ya que 1 es más pequeño que 2.

5. Intercambiamos los números. Almacenamos temporalmente un número a temp, 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 bucle For Next (Fuera de la instrucción If).

Next j

Para i = 1 y j = 7, Excel VBA intercambió lanú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, 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 bucle For Next (Fuera de la instrucción If).

Next i

8. Pon a prueba tu programa.

Resultado:

Ordenar números en Excel VBA

Lea también: