Saltar al contenido

Macro para ordenar datos de forma aleatoria


Recommended Posts

publicado

Buenos días a todos;

-A ver si es posible una ayudita vuestra.

Adjunto una macro donde en las columna A:C tengo unos datos que están ordenados de en la columna A de menor a mayor.

Necesito crear si es posible una macro para que me ordene esos datos pero de forma aleatoria, ¿sería posible?.

Un saludo y buena semana a todos.

 

 

MAleatorio.xlsm

publicado
Hace 22 horas, Antoni dijo:

¿Ordenar de forma aleatoria?, o sea, desordenar. ¿No??

Lo miro luego, que ahora he de ir a pasar la ITV.

Hola e bo día Antoni;

Me imagino que te has olvidado (?) o es que no se puede (?).

Sólo era por saber si se puede o no.

 

Un abrazo.

publicado
Hace 2 horas, Antoni dijo:

? ? ? Se me olvidó subir el archivo.

MAleatorio.xlsm 16.25 kB · 0 descargas

Hola Antoni, si está muy bien pero me gustaba que el el resultado se ponga en la columna "A" y no en la "F".

Es más sólo me interesa que se desordene la columna "A", en el ejemplo no me dí cuenta y te puse el desorden por línea. 

¿Sería posible o es mucho pedir?.

Muchas gracias Antoni. 

 

 

publicado

Hola!

Tomando de base tu archivo, ahí te va esta versión

Sub DesOrdenar()

With Range("A2", Range("A1").End(xlDown)).Offset(, 3)
    .Formula = "=Rand()"
    Range("A1").Sort Range("D1"), xlAscending, , , , , , xlYes
    .ClearContents
End With

End Sub

 

Saludos a ambos!

publicado
Sub Desordenar()
Application.ScreenUpdating = False
Range("A:C").Copy Range("F:H")
Columns("D").Clear
x = Range("A" & Rows.Count).End(xlUp).Row
filas = 2
Do Until filas > x
   fila = Int(Rnd * x) + 1
   If fila > 1 Then
      If Range("D" & fila) = "" Then
         Range("D" & fila) = "x"
         Range("A" & fila).Resize(1, 3).Copy Range("F" & filas)
         filas = filas + 1
      End If
   End If
Loop
Range("F:I").Cut Range("A:D")
End Sub

Peo mejor usar la macro de Gerson.

publicado
Hace 1 hora, Gerson Pineda dijo:

Hola!

Tomando de base tu archivo, ahí te va esta versión

Sub DesOrdenar()

With Range("A2", Range("A1").End(xlDown)).Offset(, 3)
    .Formula = "=Rand()"
    Range("A1").Sort Range("D1"), xlAscending, , , , , , xlYes
    .ClearContents
End With

End Sub

 

Saludos a ambos!

Gerson, perfecta la macro. 

Guay me encantó. 

Te lo agradezco muchísimo. 

Un abrazo ?  ?  ? 

publicado
Hace 21 minutos , Antoni dijo:
Sub Desordenar()
Application.ScreenUpdating = False
Range("A:C").Copy Range("F:H")
Columns("D").Clear
x = Range("A" & Rows.Count).End(xlUp).Row
filas = 2
Do Until filas > x
   fila = Int(Rnd * x) + 1
   If fila > 1 Then
      If Range("D" & fila) = "" Then
         Range("D" & fila) = "x"
         Range("A" & fila).Resize(1, 3).Copy Range("F" & filas)
         filas = filas + 1
      End If
   End If
Loop
Range("F:I").Cut Range("A:D")
End Sub

Peo mejor usar la macro de Gerson.

Gracias Antoni,  pensé que no se podía. 

Al igual  que  a Gerson, muy agradecido a los dos. Sois unos craks.

Un abrazo e un pouco de fresco?, por lo menos aquí en las Rías Baixas.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.