Comment puis-je randomiser beaucoup de lignes dans 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
Je pourrais faire une nouvelle colonne et la remplir avec des nombres aléatoires en utilisant = Rand () et trier en fonction de cette colonne.
Mais est-ce la meilleure façon de le faire? L'équation Rand fournira jusqu'à n million de nombres aléatoires et j'ai un quart de million de lignes, il semble donc que cela fonctionnerait.
Merci
J'ai cherché un peu et bien que cette réponse à propos de la randomisation des colonnes est proche, cela semble excessif.
Toute la colonne pleine de nombres aléatoires n’est peut-être pas la meilleure façon de le faire, mais il semble que ce soit probablement la plus pratique, comme l'a mentionné @mariusnn.
Sur cette note, cela m’a piétiné pendant un certain temps avec Office 2010, et bien que les réponses soient généralement les suivantes: celui de lifehacker , je voulais simplement partager une étape supplémentaire pour que les chiffres soient uniques:
=Rand()
dans la première cellule de la nouvelle colonne - cela générera un nombre aléatoire compris entre 0 et 1Remplissez la colonne avec cette formule. La façon la plus simple de procéder est de:
Vous devriez maintenant avoir une colonne de numéros identiques, même s'ils sont tous générés aléatoirement.
Le truc ici est de les recalculer! Allez à l'onglet Formules puis cliquez sur Calculer maintenant (ou appuyez sur F9).
Désormais, tous les numéros de la colonne seront générés de manière aléatoire.
Allez sur l'onglet Home et cliquez sur Trier & filtrer . Choisissez l'ordre dans lequel vous voulez ( du plus petit au plus grand ou du plus grand au plus petit ) - celui qui vous donnera un ordre aléatoire par rapport à l'ordre d'origine. Cliquez ensuite sur OK lorsque l'avertissement de tri vous invite à développez la sélection .
Votre liste devrait être aléatoire maintenant! Vous pouvez vous débarrasser de la colonne de nombres aléatoires si vous le souhaitez.
Je fais habituellement ce que tu décris:
Ajoutez une colonne distincte avec une valeur aléatoire (=Rand()
), puis effectuez un tri sur cette colonne.
Cela pourrait être plus complexe et plus joli (en utilisant des macros, etc.), mais c'est assez rapide et assez simple pour moi.
Voici une macro qui vous permet de mélanger les cellules sélectionnées dans une colonne:
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
Vous pouvez lire les commentaires pour voir ce que fait la macro. Voici comment installer la macro:
Vous pouvez maintenant affecter la macro "ShuffleSelectedCells" à une icône ou à un raccourci clavier pour randomiser rapidement les lignes sélectionnées (gardez à l'esprit que vous ne pouvez sélectionner qu'une colonne de lignes).