Función Ordenar Aleatorio

0

 FUNCIÓN VBA ORDENARALEATORIO

A conitnuación te presento una función que ordena de manera aleatoria un rango específico, el cual te puede ayudar a realizar procesos específicos como desordenar un rango de manera aletoria.

----------------------------------------------------------------------------------------------------------------------------

Function OrdenarAleatoriamente(rango As Variant) As Variant

    'Establecer el rango de celdas que se ordenarán aleatoriamente

    'Crear una matriz para almacenar los valores originales del rango

    Dim valores As Variant

    valores = rango.Value

    'Crear una matriz para almacenar los índices de las filas del rango

    Dim indices() As Integer

    ReDim indices(1 To rango.Rows.Count)

    For i = 1 To rango.Rows.Count

        indices(i) = i

    Next i

    'Ordenar aleatoriamente los índices de las filas

    Randomize

    For i = 1 To rango.Rows.Count - 1

        j = Int((rango.Rows.Count - i + 1) * Rnd + i)

        temp = indices(j)

        indices(j) = indices(i)

        indices(i) = temp

    Next i

    

    'Rearmar los valores del rango en una nueva matriz ordenada aleatoriamente

    Dim valoresOrdenados() As Variant

    ReDim valoresOrdenados(1 To rango.Rows.Count, 1 To rango.Columns.Count)

    For i = 1 To rango.Rows.Count

        For j = 1 To rango.Columns.Count

            valoresOrdenados(i, j) = valores(indices(i), j)

        Next j

    Next i       

    'Colocar los valores ordenados aleatoriamente de vuelta en el rango de celdas original

    rango.Value = valoresOrdenados

End Function

------------------------------------------------------------------------------------------------------------------------

***********************************************************************************

'Por medio del siguiente código pordemos llamar a OrdenarAleatorio adjuntandole un rango específico.

Sub DesordenarAleatorio()    

       OrdenarAleatoriamente (hj_lista.[range_B])

       OrdenarAleatoriamente (hj_lista.[range_I])

       OrdenarAleatoriamente (hj_lista.[range_N])

       OrdenarAleatoriamente (hj_lista.[range_G])

       OrdenarAleatoriamente (hj_lista.[range_O])

End Sub

***********************************************************************************

No olivides compartir y dalre like a mi video.



Tal vez te interesen estas entradas

No hay comentarios