A continuación, veremos un programa en Excel VBA que ordena los datos de forma aleatoria (en este ejemplo, ordena los nombres de forma aleatoria).

Situación:

Ordenar datos aleatoriamente en Excel VBA

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 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 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. Comenzamos un bucle doble .

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, 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 = Cells(i, 1).Value
Cells(i, 1).Value = Cells(j, 1).Value
Cells(j, 1).Value = tempString

6. E intercambiamos los números.

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

7. No olvide cerrar la declaración If.

End If

8. No olvide cerrar los dos bucles. 

    Next j
Next i

9. Pruebe el programa.

Resultado:

Ordenar aleatoriamente el resultado de datos

Nota: puede agregar una línea que elimine 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.

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