Ordenar datos aleatoriamente en Excel VBA - Macros de Excel fáciles

Tabla de contenido

A continuación, veremos un programa en Excel VBA ese ordena datos al azar (en este ejemplo ordena los nombres al azar).

Situación:

1. Primero, declaramos cuatro variables. Una variable de tipo String que llamamos TempString, una variable de tipo Integer que llamamos TempInteger, una variable de tipo Integer que llamamos i, y una variable de tipo Integer que llamamos j.

Dim tempString como cadena, tempInteger como entero, i como entero, j como entero

2. Escribimos 5 números aleatorios en la columna B (uno para cada nombre). Usamos la función de hoja de trabajo RandBetween para esto.

Para i = 1 a 5
Cells (i, 2) .Value = WorksheetFunction.RandBetween (0, 1000)
Siguiente yo

Resultado hasta ahora:

Usaremos los números al lado de cada nombre para ordenar los nombres. El nombre con el número más bajo primero, el nombre con el segundo número más bajo, segundo, etc.

3. Iniciamos un bucle doble.

Para i = 1 a 5
Para j = i + 1 a 5

4. Agregue la siguiente línea de código:

Si Cells (j, 2) .Value <Cells (i, 2) .Value Then

Ejemplo: para i = 1 y j = 2, se comparan Wendy y Richard. Debido a que Richard tiene un número más bajo, intercambiamos a Wendy y Richard. Richard está ahora en la primera posición. Para i = 1 yj = 3, se comparan Richard y Joost. Joost tiene un número más alto, por lo que no pasa nada. De esta manera, Excel VBA obtiene el nombre con el número más bajo en la primera posición. Para i = 2, Excel VBA obtiene el nombre con el segundo número más bajo en la segunda posición, etc.

5. Si es cierto, intercambiamos los nombres.

tempString = Celdas (i, 1) .Valor
Celdas (i, 1) .Valor = Celdas (j, 1) .Valor
Celdas (j, 1) .Value = tempString

6. E intercambiamos los números.

tempInteger = Celdas (i, 2) .Value
Celdas (i, 2) .Valor = Celdas (j, 2) .Valor
Celdas (j, 2) .Value = tempInteger

7. No olvide cerrar la declaración If.

Terminara si

8. No olvide cerrar los dos bucles.

 Siguiente j
Siguiente yo

9. Pruebe el programa.

Resultado:

Nota: puede agregar una línea que borre los números en la columna B. Es aún mejor colocar los números de cada nombre en una matriz, de modo que no se coloquen números en su hoja de trabajo. Sin embargo, con fines ilustrativos, hemos optado por colocar los valores en la hoja.

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

wave wave wave wave wave