Ordenar números en Excel VBA - Macros fáciles de Excel

Tabla de contenido

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

Situación:

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 como entero, j como entero, temp como entero, rng como rango

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).

Establecer rng = Rango ("A1"). CurrentRegion

3. Comenzamos dos bucles For Next.

Para i = 1 To rng.Count
Para 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 están marcados .

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 instrucción If Then.

Si rng.Cells (j) <rng.Cells (i) Entonces
Terminara 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 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 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 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.

'intercambiar números
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).

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 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).

Siguiente yo

8. Pruebe su programa.

Resultado:

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave