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:
- Aprire l'editor VBA (Alt + F11).
- 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.
- 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).
questo è un modo piuttosto semplice per andare, non c'è bisogno di complicarlo se non è necessario. – datatoo
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
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) –