2012-07-13 62 views
39

Come posso randomizzare un sacco di righe in Excel?Come randomizzare le righe di 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 

Potrei creare una nuova colonna e riempirla con numeri casuali usando = RAND() e ordina in base a quella colonna.

Ma questo è il modo migliore per farlo? L'equazione RAND fornirà fino a a million random numbers e ho un quarto di milione di righe, quindi sembra che funzioni.

Grazie

Ho cercato per un po 'e mentre this answer about randomizing columns è vicino sembra che modo eccessivo.

+3

questo è un modo piuttosto semplice per andare, non c'è bisogno di complicarlo se non è necessario. – datatoo

+4

Di solito aggiungo una colonna separata con un valore casuale ('= RAND()') e poi eseguo un ordinamento su quella colonna. Non sono sicuro se è il modo migliore o fastst, ma sicuramente fa il lavoro. – mariusnn

+1

La limitazione di 'RAND' a circa un milione di numeri si applica solo alla versione precedente di Excel. Poiché Excel 2003 è stato risolto. Vedere [questo microsoft link] (http://support.microsoft.com/kb/828795) –

risposta

52

Forse l'intera colonna piena di numeri casuali non è il modo migliore per farlo, ma sembra probabilmente il più pratico come @mariusnn menzionato.

In tal senso, questo mi ha calpestato per un po 'con Office 2010, e mentre in genere risponde come the one in lifehacker lavoro, ho solo voluto condividere un passo in più necessario per i numeri di essere unico:

  1. Creare un nuova colonna accanto all'elenco che si sta andando a randomizzare
  2. Digitare =rand() nella prima cella della nuova colonna - questo genererà un numero casuale compreso tra 0 e 1
  3. Riempire la colonna con quella formula. Il modo più semplice per farlo potrebbe essere quello di:

    • scendere lungo la nuova colonna fino all'ultimo cella che si vuole randomizzare
    • tenere premuto il tasto Maiusc e fare clic sull'ultima cella
    • premere Ctrl + D
  4. Ora si dovrebbe avere una colonna di numeri identici, anche se sono tutti generati in modo casuale.

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

    Il trucco è quello di ricalcolare loro! Vai alla scheda Formule e fai clic su Calcola ora (o premi F9).

    Actually random numbers!

    Ora tutti i numeri nella colonna sarà effettivamente generato in modo casuale.

  5. Vai alla scheda casa e cliccare su Ordina & Filtro.Scegli l'ordine desiderato (Dal più piccolo al più grande o Dal più grande al più piccolo) - qualsiasi ordine ti fornisca un ordine casuale rispetto all'originale. Quindi fare clic su OK quando l'avviso di ordinamento richiede di Espandere la selezione.

  6. La tua lista dovrebbe essere randomizzata ora! Se vuoi, puoi sbarazzarti della colonna di numeri casuali.

+3

Oppure ... Si potrebbe semplicemente usare '= rand()' su una singola cella, e fare doppio clic sul puntino su l'angolo in basso a destra della cella selezionata per applicarlo sull'intera colonna. –

7

Di solito faccio come descritto:
Aggiungere una colonna separata con un valore casuale (=RAND()) e quindi eseguire un ordinamento su quella colonna.

Potrebbe essere modi più complessi e più belli (utilizzando macro, ecc.), Ma questo è abbastanza veloce e abbastanza semplice per me.

1

Ecco una macro che consente di rimescolare celle selezionate in una colonna:

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 

È possibile leggere i commenti per vedere che cosa la macro sta facendo. Ecco come installare la macro:

  1. Aprire l'editor VBA (Alt + F11).
  2. Fare clic con il tasto destro del mouse su "ThisWorkbook" sotto il foglio di calcolo attualmente aperto (elencato tra parentesi dopo "VBAProject") e selezionare Inserisci/Modulo.
  3. Incollare il codice sopra e salvare il foglio di calcolo.

Ora è possibile assegnare la macro "ShuffleSelectedCells" a un'icona o tasto di scelta rapida per randomizzare casualmente le righe selezionate (tenere presente che è possibile selezionare solo una colonna di righe).

Problemi correlati