¿Cómo genera EXCEL aleatoriamente números enteros no repetidos dentro de un rango específico?
Esto se puede lograr utilizando la programación VBA. Hay muchos métodos. Uno es la función de diccionario. No se pueden insertar duplicados en el diccionario. La desventaja es que el tiempo de ejecución del programa es incierto y se seguirán generando números aleatorios hasta que no haya más repeticiones. La otra es generar números aleatorios del 1 al 100 por primera vez, quitar los números aleatorios obtenidos y luego generar números aleatorios del 1 al 99. . . Al pasar a 1 de esta manera, se completan los requisitos de la pregunta.
Utilizamos el segundo método para crear el siguiente código:
Número subaleatorio ()
Dim mYarr(1 To 100, 1 To 2) p> p>
Dim Tarr(1 To 100, 1 To 2) 'Almacenamiento de números generados aleatoriamente
Dim I, J, K, L como entero
'Leer el Datos originales
I = 2
Hacer mientras que las celdas (I, 1) gt 0
mYarr(I - 1, 1) = Celdas (I, 1 )
mYarr(I - 1, 2) = Celdas(I, 2)
I = I 1
Bucle
I = I - 2
L = 1
Para K = I a 1 paso -1
Aleatorizar
J = Int( ( Rnd * K) 1)
Tarr(L, 1) = L
Tarr(L, 2) = mYarr(J, 2)
' will El valor sube un espacio a partir de J 1
Para M = J To I - 1
mYarr(M, 1) = mYarr(M 1, 1)
mYarr(M, 2) = mYarr(M 1, 2)
Siguiente M
L = L 1
Siguiente K
'Salida de un entero aleatorio
Para J = 1 a I Celdas(J 1, 5) = Tarr(J, 1) Celdas(J 1, 6) = Tarr (J, 2)
Next J
End Sub
Esta macro
El primer paso: agregar los datos en las columnas 1 y 2 Leer en la matriz MYARR
Paso 2: generar aleatoriamente un número aleatorio y mover el valor correspondiente al número aleatorio a la matriz TARR (matriz de destino)
Paso 3: mover el valor TARR en la matriz de destino Salida a las columnas 5 y 6. Los resultados de la ejecución son como se muestra en la figura:
Puede ver que la columna G se verifica para ver si hay columnas duplicadas y el resultado es no.