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:
- Abra el editor de VBA (Alt + F11).
- 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.
- 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).
que es un camino bastante simple, sin necesidad de complicarlo si no es necesario. – datatoo
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
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) –