web-dev-qa-db-fra.com

Comment randomiser des lignes Excel

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.

43
Joshua Dance

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:

  1. Créez une nouvelle colonne à côté de la liste que vous allez randomiser
  2. Tapez =Rand() dans la première cellule de la nouvelle colonne - cela générera un nombre aléatoire compris entre 0 et 1
  3. Remplissez la colonne avec cette formule. La façon la plus simple de procéder est de:

    • descendre le long de la nouvelle colonne jusqu'à la dernière cellule que vous souhaitez randomiser
    • maintenez la touche Maj enfoncée et cliquez sur la dernière cellule
    • appuyez sur Ctrl + D
  4. Vous devriez maintenant avoir une colonne de numéros identiques, même s'ils sont tous générés aléatoirement.

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

    Le truc ici est de les recalculer! Allez à l'onglet Formules puis cliquez sur Calculer maintenant (ou appuyez sur F9).

    Actually random numbers!

    Désormais, tous les numéros de la colonne seront générés de manière aléatoire.

  5. 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 .

  6. Votre liste devrait être aléatoire maintenant! Vous pouvez vous débarrasser de la colonne de nombres aléatoires si vous le souhaitez.

56
arturomp

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.

8
mariusnn

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:

  1. Ouvrez l'éditeur VBA (Alt + F11).
  2. Cliquez avec le bouton droit de la souris sur "ThisWorkbook" sous la feuille de calcul actuellement ouverte (listée entre parenthèses après "VBAProject") et sélectionnez Insérer/Module.
  3. Collez le code ci-dessus et enregistrez la feuille de calcul.

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).

1
thdoan