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:
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 al azar en la columna B (uno para cada nombre). Usamos la función de la hoja de trabajo RandBetween para esto.
Para i = 1 a 5 Células(i, 2).Valor = Hoja de trabajoFunción.RandBetween(0, 1000) Siguiente…
Resultado hasta ahora:
Usaremos los números junto a 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 doble bucle.
Para i = 1 a 5 Para j = i + 1 a 5
4. Añade la siguiente línea de código:
Si Células(j, 2).Valor < Células(i, 2).Valor Entonces
Ejemplo: para i = 1 y j = 2, se comparan Wendy y Richard. Debido a que Richard tiene un número menor, intercambiamos a Wendy y Richard. Richard está en la primera posición ahora. Para i = 1 y j = 3, se comparan Richard y Joost. 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 cierto, intercambiamos los nombres.
tempString = Células(i, 1).Valor Células(i, 1).Valor = Células(j, 1).Valor Células(j, 1).Valor = tempString
6. Y cambiamos los números.
tempInteger = Celdas(i, 2).Valor Células(i, 2).Valor = Células(j, 2).Valor Células(j, 2).Valor = tempInteger
7. No te olvides de cerrar la declaración del Si.
Finalizar si
8. No te olvides de cerrar los dos bucles.
Siguiente j Siguiente…
9. Pruebe el programa.
Resultado:
Nota: puedes añadir una línea que borre los números de la columna B. Es aún más agradable colocar los números de cada nombre en una matriz, así no se colocan números en tu hoja de trabajo. Sin embargo, con fines ilustrativos hemos elegido colocar los valores en la hoja.