2012-07-13 17 views
39

¿Cómo puedo aleatorizar muchas filas en Excel?Cómo asignar al azar filas de Excel

For example I have an excel sheet with data in 3 rows. 
1 A dataA 
2 B dataB 
3 C dataC 

I want to randomize the row order. For example 
2 B dataB 
1 A dataA 
3 C dataC 

Podría hacer una nueva columna y llenarla con números aleatorios usando = RAND() y ordenar según esa columna.

¿Pero esta es la mejor manera de hacerlo? La ecuación RAND proporcionará hasta a million random numbers y tengo un cuarto de millón de filas, así que parece que funcionaría.

Gracias

busqué un poco y mientras this answer about randomizing columns es cerca que parece que forma un exceso.

+3

que es un camino bastante simple, sin necesidad de complicarlo si no es necesario. – datatoo

+4

Normalmente agrego una columna separada con un valor aleatorio ('= RAND()') y luego realizo una clasificación en esa columna. No estoy seguro de si es la mejor o más rápida, pero ciertamente hace el trabajo. – mariusnn

+1

La limitación de 'RAND' a alrededor de un millón de números solo se aplica a la versión anterior de Excel. Desde Excel 2003, esto se ha resuelto. Vea [este enlace de Microsoft] (http://support.microsoft.com/kb/828795) –

Respuesta

52

Tal vez toda la columna llena de números aleatorios no es la mejor manera de hacerlo, pero parece ser probablemente la más práctica como mencionó @mariusnn.

En ese sentido, esto me pisoteó por un tiempo con Office 2010, y si bien en general respuestas como the one in lifehacker trabajo, sólo quería compartir un paso adicional requerido para los números para ser único:

  1. Crear una nueva columna junto a la lista que va a cambiar aleatoriamente
  2. Type en =rand() en la primera celda de la nueva columna - esto generará un número aleatorio entre 0 y 1
  3. Llenar la columna con esa fórmula. La forma más sencilla de hacer esto puede ser a:

    • descienden a lo largo de la nueva columna hasta la última celda que desea asignar al azar a
    • mantenga pulsada la tecla Mayús y haga clic en la última celda
    • pulse Ctrl + D
  4. Ahora debe tener una columna de números idénticos, a pesar de que todos se generan de forma aleatoria.

    Random numbers... that are the same...

    El truco aquí es para volver a calcular ellos! Vaya a la pestaña Formulas y luego haga clic en . Calcule ahora (o presione F9).

    Actually random numbers!

    Ahora todos los números de la columna se genera realmente al azar.

  5. Ir a la pestañaInicio y haga clic en Ordenar & Filtro.Elija el orden que desee (Más pequeño a más grande o Más grande a más pequeño) - cualquiera le dará un orden aleatorio con respecto a la orden original. A continuación, haga clic en Aceptar cuando Sort Warning le solicite Amplíe la selección.

  6. ¡Su lista debe ser aleatorizada ahora! Puede deshacerse de la columna de números aleatorios si lo desea.

+3

O ... Podría simplemente usar '= rand()' en una sola celda, y haga doble clic en el pequeño punto en la esquina inferior derecha de la celda seleccionada para aplicarlo en toda la columna. –

7

Normalmente hago lo que describes:
Agrega una columna por separado con un valor aleatorio (=RAND()) y luego realiza un ordenamiento en esa columna.

Podría ser formas más complejas y más bonitas (usando macros, etc.), pero esto es lo suficientemente rápido y simple para mí.

1

Aquí es una macro que le permite barajar las celdas seleccionadas en una columna:

Option Explicit 

Sub ShuffleSelectedCells() 
    'Do nothing if selecting only one cell 
    If Selection.Cells.Count = 1 Then Exit Sub 
    'Save selected cells to array 
    Dim CellData() As Variant 
    CellData = Selection.Value 
    'Shuffle the array 
    ShuffleArrayInPlace CellData 
    'Output array to spreadsheet 
    Selection.Value = CellData 
End Sub 

Sub ShuffleArrayInPlace(InArray() As Variant) 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
' ShuffleArrayInPlace 
' This shuffles InArray to random order, randomized in place. 
' Source: http://www.cpearson.com/excel/ShuffleArray.aspx 
' Modified by Tom Doan to work with Selection.Value two-dimensional arrays. 
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    Dim J As Long, _ 
    N As Long, _ 
    Temp As Variant 
    'Randomize 
    For N = LBound(InArray) To UBound(InArray) 
    J = CLng(((UBound(InArray) - N) * Rnd) + N) 
    If J <> N Then 
     Temp = InArray(N, 1) 
     InArray(N, 1) = InArray(J, 1) 
     InArray(J, 1) = Temp 
    End If 
    Next N 
End Sub 

Usted puede leer los comentarios para ver lo que está haciendo la macro. Aquí se explica cómo instalar la macro:

  1. Abra el editor de VBA (Alt + F11).
  2. Haga clic derecho en "ThisWorkbook" debajo de su hoja de cálculo abierta actualmente (enumerada entre paréntesis después de "VBAProject") y seleccione Insertar/Módulo.
  3. Pega el código de arriba y guarda la hoja de cálculo.

Ahora puede asignar la macro "ShuffleSelectedCells" a un icono o tecla rápida para aleatorizar rápidamente las filas seleccionadas (tenga en cuenta que solo puede seleccionar una columna de filas).

Cuestiones relacionadas