A continuación vamos a ver un programa en Excel VBA que ordena al azar de datos (en este ejemplo ordena al azar nombres).

Situación:

Randomly Sort Data in Excel VBA

  1. En primer lugar, declarar cuatro variables. Una variable de tipo String que llamamos TempString, una variable de tipo entero que llamamos TempInteger, una variable de tipo entero que llamamos i, y una variable de tipo entero que llamamos j.

Dim tempString As String, tempInteger As Integer, i As Integer, j As Integer
  1. Escribimos 5 números aleatorios a la columna B (uno para cada nombre). Usamos la función de hoja de RANDBETWEEN para esto.

For i = 1 To 5

Cells(i, 2).Value = WorksheetFunction.RandBetween(0, 1000)

Next i

Como resultado hasta el momento:

Result so far

Vamos a utilizar los números al lado de cada nombre para ordenar los nombres. El nombre con el número más bajo en primer lugar, el nombre con el número más bajo segundos, segundo, etc.

  1. Comenzamos un bucle doble.

For i = 1 To 5

For j = i + 1 To 5
  1. Añadir 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. Debido a que Richard tiene un número más bajo, que intercambiar 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 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 número de la segunda más baja en la segunda posición, etc.

  1. Si es verdad, que enlace: / VBA-ejemplos de intercambio swap de valores [] los nombres.

tempString = Cells(i, 1).Value

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

Cells(j, 1).Value = tempString
  1. Y Intercambiamos los números.

tempInteger = Cells(i, 2).Value

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

Cells(j, 2).Value = tempInteger
  1. No se olvide de cerrar la instrucción if.

End If
  1. No se olvide de cerrar los dos bucles.

Next j

Next i

Prueba 9. programa.

Resultado:

Randomly Sort Data Result

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