Extraer números aleatorios de un rango de números variables con macro

SIgue la continuación a mi pregunta anterior, donde la macro que me proporcionaron actúa tal cual como la pedí en la pregunta pasada, básicamente lo que hace la macro es extraer una cantidad de números que se le indica de un rango de números. Y lo hace de acuerdo a la fila donde esta pocisionado el cursor, osea si esta en la celda AW3, solo extrae los números de la fila 3 y así sucesivamente.

Ahora necesito que la macro actúe como lo esta haciendo, con la diferencia de que no extraiga los números fila por fila, si no que si yo selecciono según la foto adjuntada de la celda AW2:AW15 extraiga los números de todas esas filas y no uno por uno como lo hace la actual macro,

Adjunto foto del rango a manera de ejemplo y también la macro actual. Mil gracias

Macro:

Sub aleatorio_2()
'Por Dante Amor
    Dim num As New Collection
    On Error Resume Next
    fila = ActiveCell.Row
    ini = Columns("Q").Column               'columna inicial
    fin = ini + Cells(fila, "AF").Value - 1 'columna final
    col = Columns("AH").Column              'columna resultados
    n = Cells(fila, "AG").Value
    '
    Do While num.Count < n
        columna = WorksheetFunction.RandBetween(ini, fin)
        valor = Cells(fila, columna).Value
        num.Add Item:=valor, Key:=CStr(valor)
    Loop
    For i = 1 To num.Count
        Cells(fila, col).Value = num(i)
        col = col + 1
    Next
    MsgBox "Fin"
End Sub

1 respuesta

Respuesta
1

Te anexo la macro actualizada

Sub aleatorio_3()
'Por Dante Amor
    Dim num As New Collection
    On Error Resume Next
    For Each cadafila In Selection.Rows
        Set num = Nothing
        fila = cadafila.Row
        ini = Columns("Q").Column               'columna inicial
        fin = ini + Cells(fila, "AF").Value - 1 'columna final
        col = Columns("AH").Column              'columna resultados
        n = Cells(fila, "AG").Value
        '
        Do While num.Count < n
            columna = WorksheetFunction.RandBetween(ini, fin)
            valor = Cells(fila, columna).Value
            num.Add Item:=valor, Key:=CStr(valor)
        Loop
        For i = 1 To num.Count
            Cells(fila, col).Value = num(i)
            col = col + 1
        Next
    Next
    MsgBox "Fin"
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas