Seleccione aleatoriamente el contenido de las celdas en un rango específico en Excel sin repetirlo
Si no prestas atención a las habilidades, puedes utilizar el método sin salida:
Sub R_DATA()
Dim Data_Range As Range
Atenuar sht como hoja de trabajo
Dim p, t, Data_Count, RND_r, RND_c
p = 0.7 'Especifique la proporción
t = Aplicación. WorksheetFunction.CountA("A1:T25200") 'Número de datos estadísticos
Set Data_Range = Range("A1:T25200") 'Especifica el área de datos de origen
Set sht = Hojas de trabajo ("Sheet2") 'Especifique el número aleatorio que se extraerá. Guardar hoja de trabajo
Do While Data_Count < Round(t * p, 0) ' Se repite cuando el recuento de valores es menor que la proporción especificada
RND_c = Int(Rnd() * 20 + 1) ' Escoger aleatoriamente coordenadas de fila
RND_r = Int(Rnd() * 25200 + 1) ' Escoger aleatoriamente coordenadas de columna
If sht.Cells(RND_r, RND_c) <> 1 And Cells(RND_r, RND_c) <> "" Entonces ' Determinar si se ha obtenido el valor y si está vacío
sht.Cells(RND_r , RND_c) = Cells(RND_r, RND_c) 'El valor se guarda en la misma posición en la tabla Hoja2
Data_Count = Data_Count + 1 ' Agrega 1 al recuento de valores
End If
Bucle
End Sub
Explicación, dado que la versión de EXCEL es 2003, el número máximo de filas es 65536. Si toma el 70% de los 490.000 datos, es imposible guardar las siguientes columnas. Por lo tanto, el código almacena estos datos en otra hoja de trabajo, Hoja2, en la misma ubicación que la tabla original.