Macro que me elija de una lista una cantidad aleatoria de términos

Tengo una lista de 200 términos en la Hoja1en la columna A, en la B esta el significado y en la C la clasificación; necesito que en la Hoja2 yo pueda indicar el número de términos que se desplieguen en una lista y que estos sean escogidos aleatoriamente de la Hoja1 y me copie a la par el correspondiente de la columna B y C, así mismo que no es repitan los términos escogidos

Respuesta
2

Este es el resultado de la macro, en la hoja 2 en la celda F1 tecleas la cantidad de términos que quieras que sean copiadas y la macro te traerá la cantidad tecleada sin repeticionesy esta es la macro

Sub copiar_aleatorios()
Dim unicos As New Collection
Set h1 = Worksheets("hoja1").Range("a1").CurrentRegion
cant = Range("f1")
Worksheets("hoja2").Range("a1").CurrentRegion.ClearContents
Set h2 = Worksheets("hoja2").Range("a1").Resize(cant, 3)
matriz = h2
For i = 1 To cant
otro:
    numero = WorksheetFunction.RandBetween(1, 200)
    On Error Resume Next
        unicos.Add numero, CStr(numero)
        If Err.Number > 0 Then GoTo otro
        matriz(i, 1) = h1.Cells(numero, 1)
        matriz(i, 2) = h1.Cells(numero, 2)
        matriz(i, 3) = h1.Cells(numero, 3)
    On Error GoTo 0
Next i
h2.Range(h2.Address) = matriz
h2.EntireColumn.AutoFit
Erase matriz
Set h1 = Nothing: Set h2 = Nothing
End Sub

¡Gracias!, ¿Hay algo que se le pueda agregar para que en la hoja2 empiece a escribir a partir del A5?

Cambia estas líneas

Worksheets("hoja2"). Range("a1"). CurrentRegion. ClearContents
Set h2 = Worksheets("hoja2").Range("a1").Resize(cant, 3)

por estas

Worksheets("hoja2").Range("a5").CurrentRegion.ClearContents
Set h2 = Worksheets("hoja2").Range("a5").Resize(cant, 3)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas