/ / Ordenar aleatoriamente los datos en Excel VBA

Ordenar aleatoriamente los datos en Excel VBA

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

Situación:

Ordenar aleatoriamente los datos en Excel VBA

1. Primero, declaramos cuatro variables. Una variable de tipo Cadena 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 As String, tempInteger As Integer, i As Integer, j As Integer

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

For i = 1 To 5
    Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)
Next i

Resultado hasta ahora:

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. Empezamos un Double Loop.

For i = 1 To 5
    For j = i + 1 To 5

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

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

Ejemplo: para i = 1 y j = 2, Wendy y Richard se comparan. Como Richard tiene un número más bajo, intercambiamos a Wendy y Richard. Richard está en la primera posición ahora. Para i = 1 y j = 3, Richard y Joost se comparan. Joost tiene un número más alto, así 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 verdadero, intercambiamos los nombres.

tempString = Cells(i, 1).Value
Cells(i, 1).Value = Cells(j, 1).Value
Cells(j, 1).Value = tempString

6. Y cambiamos los números.

tempInteger = Cells(i, 2).Value
Cells(i, 2).Value = Cells(j, 2).Value
Cells(j, 2).Value = tempInteger

7. No olvides cerrar la sentencia If.

End If

8. No te olvides de cerrar los dos bucles.

    Next j
Next i

9. Probar el programa.

Resultado:

Ordenar aleatoriamente el resultado de datos

Nota: puede agregar una línea que borra los números en la columna B. Es aún más agradable colocar los números de cada nombre en una matriz, por lo que no se colocan números en su hoja de trabajo. Sin embargo, para fines ilustrativos hemos elegido colocar el Valores en la hoja.

Lea también: